summaryrefslogtreecommitdiff
path: root/sources/scalac/Global.java
diff options
context:
space:
mode:
authormihaylov <mihaylov@epfl.ch>2005-05-29 23:06:35 +0000
committermihaylov <mihaylov@epfl.ch>2005-05-29 23:06:35 +0000
commit08d6815870d309e1ce924a99f17f50c6e46f89cd (patch)
treeb02781adb87721405c94615ac91c57aa88c922c3 /sources/scalac/Global.java
parenta50fb39267918c2ff500143e2c622445edacdffa (diff)
downloadscala-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.java28
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) {