summaryrefslogtreecommitdiff
path: root/sources/scalac/symtab/NameMangler.java
diff options
context:
space:
mode:
Diffstat (limited to 'sources/scalac/symtab/NameMangler.java')
-rw-r--r--sources/scalac/symtab/NameMangler.java33
1 files changed, 33 insertions, 0 deletions
diff --git a/sources/scalac/symtab/NameMangler.java b/sources/scalac/symtab/NameMangler.java
new file mode 100644
index 0000000000..30de8193d0
--- /dev/null
+++ b/sources/scalac/symtab/NameMangler.java
@@ -0,0 +1,33 @@
+/* ____ ____ ____ ____ ______ *\
+** / __// __ \/ __// __ \/ ____/ SOcos COmpiles Scala **
+** __\_ \/ /_/ / /__/ /_/ /\_ \ (c) 2002, LAMP/EPFL **
+** /_____/\____/\___/\____/____/ **
+**
+** $Id$
+\* */
+
+package scalac.symtab;
+
+import scalac.util.Name;
+import java.util.HashMap;
+
+public class NameMangler {
+
+ private HashMap/*<Symbol,HashMap<Symbol,int[]>>*/ mangleMap = new HashMap();
+
+ public void setMangledName(Symbol innerclazz) {
+ Symbol topclazz = innerclazz.enclToplevelClass();
+ HashMap map = (HashMap) mangleMap.get(topclazz);
+ if (map == null) {
+ map = new HashMap();
+ mangleMap.put(topclazz, map);
+ }
+ int[] ctr = (int[]) map.get(innerclazz);
+ if (ctr == null) {
+ ctr = new int[1];
+ map.put(innerclazz, ctr);
+ }
+ innerclazz.setMangledName(
+ Name.fromString(topclazz.name + "$" + (ctr[0]++) + innerclazz.name));
+ }
+}