From 129deca8fd3c256fcf510067502b7d4c9ac7d56b Mon Sep 17 00:00:00 2001 From: paltherr Date: Mon, 8 Sep 2003 01:04:38 +0000 Subject: - Added OUTER and SUPER methods --- sources/scalac/util/Names.java | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'sources/scalac') 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(""); public static final Name EMPTY = Name.fromString(""); public static final Name WILDCARD = Name.fromString("_"); public static final Name COMPOUND_NAME = Name.fromString(""); 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(""); public static final Name CONSTRUCTOR = Name.fromString(""); -- cgit v1.2.3