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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user