summaryrefslogtreecommitdiff
path: root/sources/scalac/symtab/Symbol.java
diff options
context:
space:
mode:
Diffstat (limited to 'sources/scalac/symtab/Symbol.java')
-rw-r--r--sources/scalac/symtab/Symbol.java14
1 files changed, 11 insertions, 3 deletions
diff --git a/sources/scalac/symtab/Symbol.java b/sources/scalac/symtab/Symbol.java
index 18c2a1aa2c..fc488aeb63 100644
--- a/sources/scalac/symtab/Symbol.java
+++ b/sources/scalac/symtab/Symbol.java
@@ -40,6 +40,7 @@ public abstract class Symbol implements Modifiers, Kinds {
// Attribues -------------------------------------------------------------
public static final int IS_ROOT = 0x00000001;
+ public static final int IS_ANONYMOUS = 0x00000002;
public static final int IS_LABEL = 0x00000010;
public static final int IS_THISTYPE = 0x20000000;
public static final int IS_LOCALDUMMY = 0x40000000;
@@ -244,11 +245,18 @@ public abstract class Symbol implements Modifiers, Kinds {
return newClass(pos, flags, name, 0, NONE);
}
- /** Creates a new module-class owned by this symbol. */
+ /** Creates a new module class owned by this symbol. */
public final ClassSymbol newModuleClass(int pos, int flags, Name name) {
return newModuleClass(pos, flags, name, 0, NONE);
}
+ /** Creates a new anonymous class owned by this symbol. */
+ public final ClassSymbol newAnonymousClass(int pos) {
+ assert isTerm(): Debug.show(this);
+ Name name = Names.ANON_CLASS_NAME.toTypeName();
+ return newClass(pos, 0, name, IS_ANONYMOUS, NONE);
+ }
+
/**
* Creates a new class with a dual module class, both owned by
* this symbol, initializes them with the loader and enters the
@@ -593,7 +601,7 @@ public abstract class Symbol implements Modifiers, Kinds {
/* Does this symbol denote an anonymous class? */
public final boolean isAnonymousClass() {
- return isClass() && name.startsWith(Names.ANON_CLASS_NAME);
+ return isClass() && (attrs & IS_ANONYMOUS) != 0;
}
/** Does this symbol denote the root class or root module?
@@ -943,7 +951,7 @@ public abstract class Symbol implements Modifiers, Kinds {
public Symbol accessed() {
assert (flags & ACCESSOR) != 0;
Name name1 = name;
- if (name1.endsWith(Names._EQ))
+ if (name1.toString().endsWith(Names._EQ.toString()))
name1 = name1.subName(0, name1.length() - Names._EQ.length());
return owner.info().lookup(Name.fromString(name1 + "$"));
}