diff options
author | paltherr <paltherr@epfl.ch> | 2003-12-19 18:57:21 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2003-12-19 18:57:21 +0000 |
commit | f22dc6124da3463c0264bf5f2d2cc9a950928e64 (patch) | |
tree | d9a89bb10c7ae27aa50d5a43cf6716a454257f1f /sources/scalac/transformer/UnCurryPhase.java | |
parent | 77eea4abf2d2870623493dabc7f7abf6b6ddbb9f (diff) | |
download | scala-f22dc6124da3463c0264bf5f2d2cc9a950928e64.tar.gz scala-f22dc6124da3463c0264bf5f2d2cc9a950928e64.tar.bz2 scala-f22dc6124da3463c0264bf5f2d2cc9a950928e64.zip |
- Added method isUnaccessedConstant
- Added removal of unaccessed constants from class scopes
Diffstat (limited to 'sources/scalac/transformer/UnCurryPhase.java')
-rw-r--r-- | sources/scalac/transformer/UnCurryPhase.java | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/sources/scalac/transformer/UnCurryPhase.java b/sources/scalac/transformer/UnCurryPhase.java index 3309bce67b..22d29294ba 100644 --- a/sources/scalac/transformer/UnCurryPhase.java +++ b/sources/scalac/transformer/UnCurryPhase.java @@ -69,11 +69,34 @@ public class UnCurryPhase extends Phase implements Modifiers { }.map(tp); case ConstantType(Type base, _): return base; + case CompoundType(Type[] parents, Scope scope): + Symbol symbol = tp.symbol(); + if (!symbol.isClass() || symbol.isCompoundSym()) return tp; + Scope clone = new Scope(); + for (Scope.SymbolIterator i = scope.iterator(true); i.hasNext();) { + Symbol member = i.next(); + if (!isUnaccessedConstant(member)) + clone.enterOrOverload(member); + } + return Type.compoundType(parents, clone, symbol); default: return tp; } } + boolean isUnaccessedConstant(Symbol symbol) { + if (!symbol.isTerm()) return false; + if ((symbol.flags & ACCESSED) != 0) return false; + switch (symbol.type()) { + case PolyType(Symbol[] params, ConstantType(_, _)): + return params.length == 0; + case ConstantType(_, _): + return true; + default: + return false; + } + } + public Checker[] postCheckers(Global global) { return new Checker[] { new CheckSymbols(global), |