generate bytecode for script

It is just prototype

* does not make top level symbols visible as class members yet
* does not take parameters
* Script class name is hardcoded now
This commit is contained in:
Stepan Koltsov
2012-05-23 02:52:29 +04:00
parent d6bf8876a3
commit f4051f45ab
16 changed files with 227 additions and 15 deletions
@@ -38,6 +38,11 @@ public class ScriptDescriptor extends DeclarationDescriptorImpl {
this.returnType = returnType;
}
@NotNull
public JetType getReturnType() {
return returnType;
}
@Override
public DeclarationDescriptor substitute(TypeSubstitutor substitutor) {
throw new IllegalStateException("nothing to substitute in script");
@@ -143,7 +143,12 @@ public class JetPsiUtil {
}
public static FqName getFQName(JetFile file) {
return getFQName(file.getNamespaceHeader());
if (file.isScript()) {
return FqName.ROOT;
}
else {
return getFQName(file.getNamespaceHeader());
}
}
@Nullable
@@ -630,7 +630,7 @@ public class BodyResolver {
Maps.<JetPattern, List<VariableDescriptor>>newHashMap(),
new LabelResolver(),
trace,
this.context.getRootScope(),
scope,
DataFlowInfo.EMPTY,
NO_EXPECTED_TYPE,
false);
@@ -29,6 +29,7 @@ import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import org.jetbrains.jet.lang.resolve.scopes.RedeclarationHandler;
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
import org.jetbrains.jet.lang.resolve.scopes.WritableScopeImpl;
import org.jetbrains.jet.lang.resolve.scopes.WriteThroughScope;
import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.lang.types.SubstitutionUtils;
@@ -207,8 +208,9 @@ public class TypeHierarchyResolver {
private void processScript(JetScript script) {
NamespaceDescriptorImpl ns = namespaceFactory.createNamespaceDescriptorPathIfNeeded(FqName.ROOT);
ScriptDescriptor scriptDescriptor = new ScriptDescriptor(ns);
WriteThroughScope scriptScope = new WriteThroughScope(
outerScope, ns.getMemberScope(), new TraceBasedRedeclarationHandler(trace));
//WriteThroughScope scriptScope = new WriteThroughScope(
// outerScope, ns.getMemberScope(), new TraceBasedRedeclarationHandler(trace));
WritableScopeImpl scriptScope = new WritableScopeImpl(outerScope, scriptDescriptor, RedeclarationHandler.DO_NOTHING);
scriptScope.changeLockLevel(WritableScope.LockLevel.BOTH);
context.getScriptScopes().put(script, scriptScope);
context.getScripts().put(script, scriptDescriptor);