summaryrefslogtreecommitdiff
path: root/sources/scalac/util/Names.java
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2003-09-08 01:04:38 +0000
committerpaltherr <paltherr@epfl.ch>2003-09-08 01:04:38 +0000
commit129deca8fd3c256fcf510067502b7d4c9ac7d56b (patch)
tree7b7add398781bacdf9c60805e8398e4fd345e67b /sources/scalac/util/Names.java
parentbb6372b1c9958dcd6c60d3e7802ea587f3f2f644 (diff)
downloadscala-129deca8fd3c256fcf510067502b7d4c9ac7d56b.tar.gz
scala-129deca8fd3c256fcf510067502b7d4c9ac7d56b.tar.bz2
scala-129deca8fd3c256fcf510067502b7d4c9ac7d56b.zip
- Added OUTER and SUPER methods
Diffstat (limited to 'sources/scalac/util/Names.java')
-rw-r--r--sources/scalac/util/Names.java23
1 files changed, 22 insertions, 1 deletions
diff --git a/sources/scalac/util/Names.java b/sources/scalac/util/Names.java
index 76c0649ec4..549e0c2ad5 100644
--- a/sources/scalac/util/Names.java
+++ b/sources/scalac/util/Names.java
@@ -12,18 +12,39 @@ import scalac.symtab.Symbol;
public class Names {
private static final Name LOCAL_PREFIX = Name.fromString("local$");
+ private static final Name OUTER_PREFIX = Name.fromString("outer$");
+ private static final Name SUPER_PREFIX = Name.fromString("super$");
public static Name LOCAL(Symbol clasz) {
return LOCAL_PREFIX.append(clasz.name);
}
+ public static Name OUTER(Symbol constructor) {
+ assert constructor.isConstructor() : Debug.show(constructor);
+ Symbol clasz = constructor.constructorClass();
+ Symbol[] constructors = clasz.allConstructors().alternativeSymbols();
+ int index = 0;
+ while (constructors[index] != constructor) index++;
+ String name = OUTER_PREFIX.toString() + index +"$"+ clasz.owner().name;
+ return Name.fromString(name);
+ }
+
+ public static Name OUTER(Symbol constructor, Symbol member) {
+ Name name = Name.fromString(OUTER(constructor) + "$" + member.name);
+ if (member.name.isTypeName()) name = name.toTypeName();
+ return name;
+ }
+
+ public static Name SUPER(Symbol method) {
+ return SUPER_PREFIX.append(method.name);
+ }
+
public static final Name ERROR = Name.ERROR;
public static final Name NOSYMBOL = Name.fromString("<none>");
public static final Name EMPTY = Name.fromString("");
public static final Name WILDCARD = Name.fromString("_");
public static final Name COMPOUND_NAME = Name.fromString("<ct>");
public static final Name ANON_CLASS_NAME = Name.fromString("$anon");
- public static final Name OUTER_PREFIX = Name.fromString("outer");
public static final Name ZERO = Name.fromString("<zero>");
public static final Name CONSTRUCTOR = Name.fromString("<init>");