diff options
author | paltherr <paltherr@epfl.ch> | 2004-02-28 00:20:04 +0000 |
---|---|---|
committer | paltherr <paltherr@epfl.ch> | 2004-02-28 00:20:04 +0000 |
commit | fffd640953bec72148093574eec60350f7b0bb58 (patch) | |
tree | 713051cee3222527fd9fc4be14563104d4f8ad51 | |
parent | 180d7c2fecac671e0afcd931dfd091e0b88034fc (diff) | |
download | scala-fffd640953bec72148093574eec60350f7b0bb58.tar.gz scala-fffd640953bec72148093574eec60350f7b0bb58.tar.bz2 scala-fffd640953bec72148093574eec60350f7b0bb58.zip |
- Simplified typeStoJ
-rw-r--r-- | sources/scalac/backend/jvm/GenJVM.java | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/sources/scalac/backend/jvm/GenJVM.java b/sources/scalac/backend/jvm/GenJVM.java index fac68d6ef4..ae1d7eaf34 100644 --- a/sources/scalac/backend/jvm/GenJVM.java +++ b/sources/scalac/backend/jvm/GenJVM.java @@ -1481,6 +1481,12 @@ class GenJVM { */ protected JType typeStoJ(Type tp) { switch (tp) { + case TypeRef(_, Symbol sym, _): + Object value = typeMap.get(sym); + if (value != null) return (JType)value; + JType jTp = new JObjectType(javaName(sym)); + typeMap.put(sym, jTp); + return jTp; case UnboxedType(TypeTags.BYTE): return JType.BYTE; case UnboxedType(TypeTags.CHAR): @@ -1503,24 +1509,13 @@ class GenJVM { return JObjectType.JAVA_LANG_STRING; case UnboxedArrayType(Type elementType): return new JArrayType(typeStoJ(elementType)); - case MethodType(Symbol[] vparams, Type result): { + case MethodType(Symbol[] vparams, Type result): JType[] argTypes = new JType[vparams.length]; for (int i = 0; i < vparams.length; ++i) argTypes[i] = typeStoJ(vparams[i].info()); return new JMethodType(typeStoJ(result), argTypes); - } - default: { - Symbol sym = tp.symbol(); - if (sym == Symbol.NONE) - throw global.fail("invalid type ", tp); - else if (typeMap.containsKey(sym)) - return (JType)typeMap.get(sym); - else { - JType jTp = new JObjectType(javaName(sym)); - typeMap.put(sym, jTp); - return jTp; - } - } + default: + throw Debug.abort("invalid type", tp); } } |