Initial support for classes in scripts and REPL
This commit is contained in:
@@ -26,8 +26,7 @@ import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.PropertyDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.ScriptDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
|
||||
import org.jetbrains.jet.lang.psi.JetDeclaration;
|
||||
import org.jetbrains.jet.lang.psi.JetScript;
|
||||
import org.jetbrains.jet.lang.psi.*;
|
||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||
import org.jetbrains.jet.lang.resolve.java.jvmSignature.JvmMethodSignature;
|
||||
import org.jetbrains.org.objectweb.asm.MethodVisitor;
|
||||
@@ -215,7 +214,12 @@ public class ScriptCodegen extends MemberCodegen<JetScript> {
|
||||
|
||||
private void genMembers() {
|
||||
for (JetDeclaration declaration : scriptDeclaration.getDeclarations()) {
|
||||
genFunctionOrProperty(declaration);
|
||||
if (declaration instanceof JetProperty || declaration instanceof JetNamedFunction) {
|
||||
genFunctionOrProperty(declaration);
|
||||
}
|
||||
else if (declaration instanceof JetClassOrObject) {
|
||||
genClassOrObject((JetClassOrObject) declaration);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -309,6 +309,11 @@ public class CodegenBinding {
|
||||
return fqName.isRoot() ? shortName : fqName.asString().replace('.', '/') + '/' + shortName;
|
||||
}
|
||||
|
||||
if (container instanceof ScriptDescriptor) {
|
||||
Type scriptType = asmTypeForScriptDescriptor(bindingContext, (ScriptDescriptor) container);
|
||||
return scriptType.getInternalName() + "$" + name.getIdentifier();
|
||||
}
|
||||
|
||||
assert container instanceof ClassDescriptor : "Unexpected container: " + container + " for " + klass;
|
||||
|
||||
String containerInternalName = getAsmType(bindingContext, (ClassDescriptor) container).getInternalName();
|
||||
|
||||
Reference in New Issue
Block a user