diff options
-rw-r--r-- | sources/scala/tools/scalac/typechecker/Analyzer.scala | 1 | ||||
-rw-r--r-- | sources/scalac/symtab/Type.java | 8 |
2 files changed, 3 insertions, 6 deletions
diff --git a/sources/scala/tools/scalac/typechecker/Analyzer.scala b/sources/scala/tools/scalac/typechecker/Analyzer.scala index 9b96f359bf..569b435f32 100644 --- a/sources/scala/tools/scalac/typechecker/Analyzer.scala +++ b/sources/scala/tools/scalac/typechecker/Analyzer.scala @@ -216,6 +216,7 @@ class Analyzer(global: scalac_Global, descr: AnalyzerPhase) extends Transformer( unit.error(pos, msg); def typeError(pos: int, found: Type, req: Type): unit = { + if (found.isError() || req.isError()) return; var msg: String = infer.typeErrorMsg("type mismatch", found, req); val foundResult: Type = found.resultType(); if (foundResult != found && infer.isCompatible(foundResult, req)) diff --git a/sources/scalac/symtab/Type.java b/sources/scalac/symtab/Type.java index bbd0455423..9adcade4a2 100644 --- a/sources/scalac/symtab/Type.java +++ b/sources/scalac/symtab/Type.java @@ -287,8 +287,6 @@ public class Type implements Modifiers, Kinds, TypeTags, EntryTags { */ public Symbol symbol() { switch (this) { - case ErrorType: - return Symbol.ERROR; case ThisType(Symbol sym): return sym; case TypeRef(_, Symbol sym, _): @@ -776,7 +774,7 @@ public class Type implements Modifiers, Kinds, TypeTags, EntryTags { public Symbol lookup(Name name) { switch (this) { case ErrorType: - return Symbol.ERROR; + return new ErrorScope(Symbol.NONE).lookup(name); case ThisType(_): case SingleType(_, _): case ConstantType(_, _): @@ -798,7 +796,7 @@ public class Type implements Modifiers, Kinds, TypeTags, EntryTags { public Symbol lookupNonPrivate(Name name) { switch (this) { case ErrorType: - return Symbol.ERROR; + return new ErrorScope(Symbol.NONE).lookup(name); case ThisType(_): case SingleType(_, _): case ConstantType(_, _): @@ -906,8 +904,6 @@ public class Type implements Modifiers, Kinds, TypeTags, EntryTags { } private Symbol[] classes() { switch (this) { - case ErrorType: - return new Symbol[] {Symbol.ERROR}; case ThisType(_): case SingleType(_, _): case ConstantType(_, _): |