summaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2004-02-28 00:20:04 +0000
committerpaltherr <paltherr@epfl.ch>2004-02-28 00:20:04 +0000
commitfffd640953bec72148093574eec60350f7b0bb58 (patch)
tree713051cee3222527fd9fc4be14563104d4f8ad51 /sources
parent180d7c2fecac671e0afcd931dfd091e0b88034fc (diff)
downloadscala-fffd640953bec72148093574eec60350f7b0bb58.tar.gz
scala-fffd640953bec72148093574eec60350f7b0bb58.tar.bz2
scala-fffd640953bec72148093574eec60350f7b0bb58.zip
- Simplified typeStoJ
Diffstat (limited to 'sources')
-rw-r--r--sources/scalac/backend/jvm/GenJVM.java23
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);
}
}