diff options
author | mihaylov <mihaylov@epfl.ch> | 2005-05-29 23:06:35 +0000 |
---|---|---|
committer | mihaylov <mihaylov@epfl.ch> | 2005-05-29 23:06:35 +0000 |
commit | 08d6815870d309e1ce924a99f17f50c6e46f89cd (patch) | |
tree | b02781adb87721405c94615ac91c57aa88c922c3 /sources/scalac/Global.java | |
parent | a50fb39267918c2ff500143e2c622445edacdffa (diff) | |
download | scala-08d6815870d309e1ce924a99f17f50c6e46f89cd.tar.gz scala-08d6815870d309e1ce924a99f17f50c6e46f89cd.tar.bz2 scala-08d6815870d309e1ce924a99f17f50c6e46f89cd.zip |
Initial support for attributes - only works for...
Initial support for attributes - only works for the scala.serializable attribute
Diffstat (limited to 'sources/scalac/Global.java')
-rw-r--r-- | sources/scalac/Global.java | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/sources/scalac/Global.java b/sources/scalac/Global.java index 6c2b9ac200..6f6bb899a3 100644 --- a/sources/scalac/Global.java +++ b/sources/scalac/Global.java @@ -35,6 +35,7 @@ import scala.tools.util.ReporterTimer; import scalac.ast.*; import scalac.ast.parser.*; import scalac.ast.printer.TreePrinter; +import scalac.atree.AConstant; import scalac.atree.ATreePrinter; import scalac.backend.Primitives; // !!! <<< Interpreter stuff @@ -121,7 +122,7 @@ public abstract class Global { /** attributes of symbols */ - public final Map/*<Symbol, Pair<Symbol, AConstant[]>>*/ mapSymbolAttr = new HashMap(); + protected final Map/*<Symbol, AttributeInfo>*/ mapSymbolAttr = new HashMap(); /** views associated with (upper-bounded) type parameters */ @@ -416,6 +417,31 @@ public abstract class Global { } } + public void addAttribute(Symbol sym, Symbol aSym, AConstant[] params) { + AttributeInfo attr = getAttributes(sym); + attr = new AttributeInfo(aSym, params, attr); + //mapSymbolAttr.put(sym, attr); + setAttribute(sym, attr); + } + + public void addAttribute(Symbol sym, Symbol aSym) { + addAttribute(sym, aSym, AConstant.EMPTY_ARRAY); + } + + public void setAttribute(Symbol sym, AttributeInfo attr) { + mapSymbolAttr.put(sym, attr); + if (sym.isModule() && !sym.isModuleClass()) + mapSymbolAttr.put(sym.moduleClass(), attr); + } + + public AttributeInfo getAttributes(Symbol sym) { + return (AttributeInfo)mapSymbolAttr.get(sym); + } + + public AttributeInfo removeAttributes(Symbol sym) { + return (AttributeInfo)mapSymbolAttr.remove(sym); + } + public abstract void dump(CompilationUnit[] units); void print(CompilationUnit[] units) { |