reducing amound ot needless diagnostics caused transitively
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
This commit is contained in:
parent
2c53f9ece9
commit
6f94ae2b2a
|
@ -1304,6 +1304,7 @@ impl<'a> Codegen<'a> {
|
||||||
self.ci.nodes.unlock_remove(end);
|
self.ci.nodes.unlock_remove(end);
|
||||||
|
|
||||||
let elem = match bs.ty.expand() {
|
let elem = match bs.ty.expand() {
|
||||||
|
ty::Kind::NEVER => ty::Id::NEVER,
|
||||||
ty::Kind::Slice(s) => self.tys.ins.slices[s].elem,
|
ty::Kind::Slice(s) => self.tys.ins.slices[s].elem,
|
||||||
ty::Kind::Ptr(_) => self.tys.base_of(bs.ty).unwrap_or(bs.ty),
|
ty::Kind::Ptr(_) => self.tys.base_of(bs.ty).unwrap_or(bs.ty),
|
||||||
_ => {
|
_ => {
|
||||||
|
@ -1318,6 +1319,7 @@ impl<'a> Codegen<'a> {
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut ptr = match bs.ty.expand() {
|
let mut ptr = match bs.ty.expand() {
|
||||||
|
ty::Kind::NEVER => bs,
|
||||||
ty::Kind::Slice(s) if let Some(_) = self.tys.ins.slices[s].len() => bs,
|
ty::Kind::Slice(s) if let Some(_) = self.tys.ins.slices[s].len() => bs,
|
||||||
ty::Kind::Slice(_) => {
|
ty::Kind::Slice(_) => {
|
||||||
let off = self.offset(bs.id, SLICE_PTR_OFF);
|
let off = self.offset(bs.id, SLICE_PTR_OFF);
|
||||||
|
@ -1363,6 +1365,7 @@ impl<'a> Codegen<'a> {
|
||||||
let idx = self.checked_expr(index, ty::Id::DINT, "subscript")?;
|
let idx = self.checked_expr(index, ty::Id::DINT, "subscript")?;
|
||||||
|
|
||||||
match bs.ty.expand() {
|
match bs.ty.expand() {
|
||||||
|
ty::Kind::NEVER => Value::NEVER,
|
||||||
ty::Kind::Slice(s) if self.tys.ins.slices[s].len().is_some() => {
|
ty::Kind::Slice(s) if self.tys.ins.slices[s].len().is_some() => {
|
||||||
let elem = self.tys.ins.slices[s].elem;
|
let elem = self.tys.ins.slices[s].elem;
|
||||||
Some(self.offset_ptr(bs.id, elem, idx.id))
|
Some(self.offset_ptr(bs.id, elem, idx.id))
|
||||||
|
@ -2592,6 +2595,7 @@ impl<'a> Codegen<'a> {
|
||||||
let tty = vtarget.ty;
|
let tty = vtarget.ty;
|
||||||
|
|
||||||
match self.tys.base_of(tty).unwrap_or(tty).expand() {
|
match self.tys.base_of(tty).unwrap_or(tty).expand() {
|
||||||
|
ty::Kind::NEVER => Value::NEVER,
|
||||||
ty::Kind::Module(m) => self.find_type_as_value(pos, m, name, ctx),
|
ty::Kind::Module(m) => self.find_type_as_value(pos, m, name, ctx),
|
||||||
ty::Kind::Enum(e) => {
|
ty::Kind::Enum(e) => {
|
||||||
let intrnd = self.tys.names.project(name);
|
let intrnd = self.tys.names.project(name);
|
||||||
|
@ -2654,6 +2658,7 @@ impl<'a> Codegen<'a> {
|
||||||
Some(Value::ptr(self.offset(vtarget.id, offset)).ty(ty))
|
Some(Value::ptr(self.offset(vtarget.id, offset)).ty(ty))
|
||||||
}
|
}
|
||||||
ty::Kind::TYPE => match self.ci.nodes.as_ty(vtarget.id).expand() {
|
ty::Kind::TYPE => match self.ci.nodes.as_ty(vtarget.id).expand() {
|
||||||
|
ty::Kind::NEVER => Value::NEVER,
|
||||||
ty::Kind::Module(m) => self.find_type_as_value(pos, m, name, ctx),
|
ty::Kind::Module(m) => self.find_type_as_value(pos, m, name, ctx),
|
||||||
ty::Kind::Enum(e)
|
ty::Kind::Enum(e)
|
||||||
if let intrnd = self.tys.names.project(name)
|
if let intrnd = self.tys.names.project(name)
|
||||||
|
|
Loading…
Reference in a new issue