summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschinz <schinz@epfl.ch>2003-02-21 12:03:08 +0000
committerschinz <schinz@epfl.ch>2003-02-21 12:03:08 +0000
commit0b68bd30b1b5101aaf3b913ab00c0af33104bf8e (patch)
treeb4c1aba177639047cef8d3d162a82556c623965f
parentbde5d217156ae7c494c19f3c11b589cd6fd4150c (diff)
downloadscala-0b68bd30b1b5101aaf3b913ab00c0af33104bf8e.tar.gz
scala-0b68bd30b1b5101aaf3b913ab00c0af33104bf8e.tar.bz2
scala-0b68bd30b1b5101aaf3b913ab00c0af33104bf8e.zip
- bug fix: do not ask for class symbols of Java...
- bug fix: do not ask for class symbols of Java classes bug fix: - generate type names for type members
-rw-r--r--sources/scalac/transformer/AddInterfaces.java21
1 files changed, 10 insertions, 11 deletions
diff --git a/sources/scalac/transformer/AddInterfaces.java b/sources/scalac/transformer/AddInterfaces.java
index 46cdfbd2a6..2559a15670 100644
--- a/sources/scalac/transformer/AddInterfaces.java
+++ b/sources/scalac/transformer/AddInterfaces.java
@@ -91,9 +91,11 @@ class AddInterfaces extends SubstTransformer {
}
protected Name uniqueName(Symbol sym) {
+ boolean isTypeName = sym.name.isTypeName();
StringBuffer buf = new StringBuffer();
uniqueName(sym, buf);
- return Name.fromString(buf.toString());
+ Name newName = Name.fromString(buf.toString());
+ return (isTypeName ? newName.toTypeName() : newName);
}
protected final static String CLASS_SUFFIX = "$class";
@@ -110,7 +112,8 @@ class AddInterfaces extends SubstTransformer {
}
// Modifiers for which we do not create interfaces.
- protected int NO_INTERFACE_MODS = (Modifiers.MODUL | Modifiers.SYNTHETIC);
+ protected int NO_INTERFACE_MODS =
+ (Modifiers.MODUL | Modifiers.SYNTHETIC | Modifiers.JAVA);
protected boolean needInterface(Symbol sym) {
return (sym.enclClass().flags & NO_INTERFACE_MODS) == 0;
@@ -166,14 +169,8 @@ class AddInterfaces extends SubstTransformer {
Name ifaceName = ifaceSym.enclClass().fullName();
classSym = global.definitions.getClass(className(ifaceName));
- if (ifaceSym.isPrimaryConstructor()) {
+ if (ifaceSym.isPrimaryConstructor())
classSym = classSym.constructor();
- }
-
- if (classSym == Symbol.NONE && (ifaceSym.flags & Modifiers.JAVA) != 0) {
- // Java symbols do not have corresponding classes
- return ifaceSym;
- }
assert classSym != Symbol.NONE : ifaceSym;
@@ -250,7 +247,6 @@ class AddInterfaces extends SubstTransformer {
for (int i = 0; i < body.length; ++i) {
Tree elem = body[i];
if (elem.hasSymbol() && elem.symbol().owner() == ifaceSym) {
- Symbol sym = elem.symbol();
if (memberGoesInInterface(elem.symbol()))
ifaceBody.add(mkAbstract(elem));
}
@@ -289,7 +285,10 @@ class AddInterfaces extends SubstTransformer {
case Type.NoType:
return type;
case ThisType(Symbol sym):
- return new Type.ThisType(getClassSym(sym));
+ if (sym == Symbol.NONE)
+ return type;
+ else
+ return new Type.ThisType(getClassSym(sym));
case TypeRef(Type pre, Symbol sym, Type[] args):
return new Type.TypeRef(fixClassSymbols(pre), getClassSym(sym), args);
case SingleType(Type pre, Symbol sym):