summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschinz <schinz@epfl.ch>2003-03-04 13:03:03 +0000
committerschinz <schinz@epfl.ch>2003-03-04 13:03:03 +0000
commitd382fa3fa45fe1d3f1e3f60d99f02a86ddb380fe (patch)
tree7dbd7ffccb0788d57717d94e34b30ba6a8553617
parent208bd5ee9e8c25ea591e5d66578d6313df3671bf (diff)
downloadscala-d382fa3fa45fe1d3f1e3f60d99f02a86ddb380fe.tar.gz
scala-d382fa3fa45fe1d3f1e3f60d99f02a86ddb380fe.tar.bz2
scala-d382fa3fa45fe1d3f1e3f60d99f02a86ddb380fe.zip
- bug fix: the new internal notation for Unit (...
- bug fix: the new internal notation for Unit (empty block) now works - bug fix: generate correct code to access Java static members
-rw-r--r--sources/scalac/backend/jvm/GenJVM.java12
1 files changed, 8 insertions, 4 deletions
diff --git a/sources/scalac/backend/jvm/GenJVM.java b/sources/scalac/backend/jvm/GenJVM.java
index d9257d6325..cafd3d10e6 100644
--- a/sources/scalac/backend/jvm/GenJVM.java
+++ b/sources/scalac/backend/jvm/GenJVM.java
@@ -223,7 +223,10 @@ class JVMGenerator {
int statsNum = stats.length;
for (int i = 0; i < statsNum - 1; ++i)
gen(stats[i], cst.T_VOID);
- gen(stats[stats.length - 1], expectedType, ctx);
+ if (statsNum == 0)
+ maybeLoadUnit(expectedType);
+ else
+ gen(stats[stats.length - 1], expectedType, ctx);
generatedType = expectedType;
} break;
@@ -602,7 +605,9 @@ class JVMGenerator {
}
protected boolean isStaticMember(Symbol sym) {
- return (sym.name != CONSTRUCTOR_NAME) && (sym.owner().isPackage());
+ return (sym.name != CONSTRUCTOR_NAME)
+ && sym.owner().isModuleClass()
+ && sym.owner().isJava();
}
protected boolean isPrimitive(Symbol sym) {
@@ -1361,8 +1366,7 @@ class JVMGenerator {
return JAVA_LANG_OBJECT;
else {
StringBuffer buf = new StringBuffer(sym.name.toString());
- if ((sym.isModule() || Modifiers.Helper.isModClass(sym.flags))
- && !sym.isPackage())
+ if ((sym.isModule() || sym.isModuleClass()) && !sym.isJava())
buf.append('$');
for (sym = sym.owner();
!(sym.isAnonymousClass() || sym.isPackage());