diff options
author | paltherr <paltherr@epfl.ch> | 2004-04-04 16:42:21 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2004-04-04 16:42:21 +0000 |
commit | b88fd07ae63caab830d3cd457dcefc3ed69073ed (patch) | |
tree | ed8320012c3526245ea3e93eccda5bbc5fe7ff2f /sources/scalac | |
parent | bf2c43a88b365ab814dffc2defd99d2c75fd065c (diff) | |
download | scala-b88fd07ae63caab830d3cd457dcefc3ed69073ed.tar.gz scala-b88fd07ae63caab830d3cd457dcefc3ed69073ed.tar.bz2 scala-b88fd07ae63caab830d3cd457dcefc3ed69073ed.zip |
- Added class ErrorScope
Diffstat (limited to 'sources/scalac')
-rw-r--r-- | sources/scalac/symtab/Scope.java | 21 | ||||
-rw-r--r-- | sources/scalac/symtab/Symbol.java | 3 |
2 files changed, 23 insertions, 1 deletions
diff --git a/sources/scalac/symtab/Scope.java b/sources/scalac/symtab/Scope.java index 490f0e30a1..e91789d107 100644 --- a/sources/scalac/symtab/Scope.java +++ b/sources/scalac/symtab/Scope.java @@ -330,3 +330,24 @@ public class Scope { public static Scope EMPTY = new Scope(); } +public class ErrorScope extends Scope { + + private final Symbol owner; + + public ErrorScope(Symbol owner) { + this.owner = owner; + } + + public Entry lookupEntry(Name name) { + Entry entry = super.lookupEntry(name); + if (entry.sym.isNone()) { + Symbol symbol = name.isTermName() + ? owner.newErrorValue(name) + : owner.newErrorClass(name); + enter(symbol); + entry = super.lookupEntry(name); + } + return entry; + } + +} diff --git a/sources/scalac/symtab/Symbol.java b/sources/scalac/symtab/Symbol.java index f3bf69bd3b..7670e31c6e 100644 --- a/sources/scalac/symtab/Symbol.java +++ b/sources/scalac/symtab/Symbol.java @@ -301,7 +301,8 @@ public abstract class Symbol implements Modifiers, Kinds { */ public ClassSymbol newErrorClass(Name name) { ClassSymbol symbol = newClass(pos, SYNTHETIC, name, IS_ERROR, NONE); - symbol.setInfo(Type.ErrorType); + Scope scope = new ErrorScope(this); + symbol.setInfo(Type.compoundType(Type.EMPTY_ARRAY, scope, this)); symbol.allConstructors().setInfo(Type.ErrorType); return symbol; } |