diff options
author | paltherr <paltherr@epfl.ch> | 2004-03-09 19:31:37 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2004-03-09 19:31:37 +0000 |
commit | b93f7b2512dbcf2acabc009dae7d5f78a0919d82 (patch) | |
tree | 0d2e56839a6817483612578d629f3ef2258dea8c /sources/scalac/symtab/Symbol.java | |
parent | 774209bb21ac348acfaec6be004d0b3fa37d56ef (diff) | |
download | scala-b93f7b2512dbcf2acabc009dae7d5f78a0919d82.tar.gz scala-b93f7b2512dbcf2acabc009dae7d5f78a0919d82.tar.bz2 scala-b93f7b2512dbcf2acabc009dae7d5f78a0919d82.zip |
- Added method Symbol.newCompoundClass
- Added Symbol.IS_COMPOUND
- Adapted Type.ExtCompoundType to use method Symbol.newCompoundClass
Diffstat (limited to 'sources/scalac/symtab/Symbol.java')
-rw-r--r-- | sources/scalac/symtab/Symbol.java | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/sources/scalac/symtab/Symbol.java b/sources/scalac/symtab/Symbol.java index 29f9a134e2..d5785891d3 100644 --- a/sources/scalac/symtab/Symbol.java +++ b/sources/scalac/symtab/Symbol.java @@ -39,7 +39,8 @@ public abstract class Symbol implements Modifiers, Kinds { // Attribues ------------------------------------------------------------- - public static final int IS_ROOT = 0x00000001; + public static final int IS_ROOT = 0x00000001; + public static final int IS_COMPOUND = 0x80000000; // Fields ------------------------------------------------------------- @@ -115,6 +116,19 @@ public abstract class Symbol implements Modifiers, Kinds { return clasz; } + /** Creates a new compound class. */ + final ClassSymbol newCompoundClass(Type info) { + int pos = Position.FIRSTPOS; + Name name = Names.COMPOUND_NAME.toTypeName(); + int flags = ABSTRACT | SYNTHETIC; + int attrs = IS_COMPOUND; + ClassSymbol clasz = newClass(pos, flags, name, attrs, NONE); + clasz.setInfo(info); + clasz.primaryConstructor().setInfo( + Type.MethodType(Symbol.EMPTY_ARRAY, clasz.typeConstructor())); + return clasz; + } + // Copying & cloning ------------------------------------------------------ protected void update(int pos, int flags) { @@ -452,10 +466,9 @@ public abstract class Symbol implements Modifiers, Kinds { return kind == CLASS && (flags & TRAIT) != 0; } - /** Does this class symbol denote a compound type symbol? - */ + /** Does this class symbol denote a compound type symbol? */ public final boolean isCompoundSym() { - return name == Names.COMPOUND_NAME.toTypeName(); + return (attrs & IS_COMPOUND) != 0; } /** Does this symbol denote a this symbol? */ |