Drop JetTypeName and related code
This commit is contained in:
@@ -18,24 +18,21 @@ package org.jetbrains.jet.cli.jvm.compiler;
|
||||
|
||||
import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
import org.jetbrains.jet.lang.types.ref.JetTypeName;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static org.jetbrains.jet.lang.types.lang.KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME;
|
||||
|
||||
public class CommandLineScriptUtils {
|
||||
private static final Name ARGS_NAME = Name.identifier("args");
|
||||
|
||||
private static final JetTypeName ARGS_TYPE =
|
||||
JetTypeName.parse(BUILT_INS_PACKAGE_FQ_NAME + ".Array<" + BUILT_INS_PACKAGE_FQ_NAME + ".String>");
|
||||
|
||||
private CommandLineScriptUtils() {
|
||||
}
|
||||
|
||||
public static List<AnalyzerScriptParameter> scriptParameters() {
|
||||
AnalyzerScriptParameter argsParameter = new AnalyzerScriptParameter(ARGS_NAME, ARGS_TYPE);
|
||||
JetType arrayOfStrings = KotlinBuiltIns.getInstance().getArrayType(KotlinBuiltIns.getInstance().getStringType());
|
||||
AnalyzerScriptParameter argsParameter = new AnalyzerScriptParameter(ARGS_NAME, arrayOfStrings);
|
||||
return Collections.singletonList(argsParameter);
|
||||
}
|
||||
|
||||
|
||||
@@ -53,7 +53,6 @@ import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
|
||||
import org.jetbrains.jet.lang.psi.JetImportsFactory;
|
||||
import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider;
|
||||
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
|
||||
import org.jetbrains.jet.lang.resolve.ScriptParameterResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaPackageFragmentProvider;
|
||||
import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver;
|
||||
@@ -105,7 +104,6 @@ public class InjectorForLazyResolveWithJava {
|
||||
private final JetImportsFactory jetImportsFactory;
|
||||
private final ScopeProvider scopeProvider;
|
||||
private final ScriptBodyResolver scriptBodyResolver;
|
||||
private final ScriptParameterResolver scriptParameterResolver;
|
||||
private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider;
|
||||
private final GlobalJavaResolverContext globalJavaResolverContext;
|
||||
private final DeserializedDescriptorResolver deserializedDescriptorResolver;
|
||||
@@ -160,7 +158,6 @@ public class InjectorForLazyResolveWithJava {
|
||||
this.jetImportsFactory = new JetImportsFactory();
|
||||
this.scopeProvider = new ScopeProvider(getResolveSession());
|
||||
this.scriptBodyResolver = new ScriptBodyResolver();
|
||||
this.scriptParameterResolver = new ScriptParameterResolver();
|
||||
this.descriptorDeserializers = new DescriptorDeserializers();
|
||||
this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer();
|
||||
this.descriptorDeserializersStorage = new DescriptorDeserializersStorage(lockBasedStorageManager);
|
||||
@@ -172,7 +169,6 @@ public class InjectorForLazyResolveWithJava {
|
||||
this.resolveSession.setQualifiedExpressionResolver(qualifiedExpressionResolver);
|
||||
this.resolveSession.setScopeProvider(scopeProvider);
|
||||
this.resolveSession.setScriptBodyResolver(scriptBodyResolver);
|
||||
this.resolveSession.setScriptParameterResolver(scriptParameterResolver);
|
||||
this.resolveSession.setTypeResolver(typeResolver);
|
||||
|
||||
javaClassFinder.setProject(project);
|
||||
@@ -242,8 +238,6 @@ public class InjectorForLazyResolveWithJava {
|
||||
|
||||
scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
|
||||
|
||||
scriptParameterResolver.setDependencyClassByQualifiedNameResolver(javaDescriptorResolver);
|
||||
|
||||
deserializedDescriptorResolver.setDeserializers(descriptorDeserializers);
|
||||
deserializedDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
|
||||
deserializedDescriptorResolver.setJavaDescriptorResolver(javaDescriptorResolver);
|
||||
|
||||
@@ -60,7 +60,6 @@ import org.jetbrains.jet.lang.resolve.DeclarationResolver;
|
||||
import org.jetbrains.jet.lang.resolve.ImportsResolver;
|
||||
import org.jetbrains.jet.lang.psi.JetImportsFactory;
|
||||
import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver;
|
||||
import org.jetbrains.jet.lang.resolve.ScriptParameterResolver;
|
||||
import org.jetbrains.jet.lang.resolve.OverloadResolver;
|
||||
import org.jetbrains.jet.lang.resolve.OverrideResolver;
|
||||
import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
|
||||
@@ -122,7 +121,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
private final ImportsResolver importsResolver;
|
||||
private final JetImportsFactory jetImportsFactory;
|
||||
private final ScriptHeaderResolver scriptHeaderResolver;
|
||||
private final ScriptParameterResolver scriptParameterResolver;
|
||||
private final OverloadResolver overloadResolver;
|
||||
private final OverrideResolver overrideResolver;
|
||||
private final TypeHierarchyResolver typeHierarchyResolver;
|
||||
@@ -188,7 +186,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
this.importsResolver = new ImportsResolver();
|
||||
this.jetImportsFactory = new JetImportsFactory();
|
||||
this.scriptHeaderResolver = new ScriptHeaderResolver();
|
||||
this.scriptParameterResolver = new ScriptParameterResolver();
|
||||
this.overloadResolver = new OverloadResolver();
|
||||
this.overrideResolver = new OverrideResolver();
|
||||
this.typeHierarchyResolver = new TypeHierarchyResolver();
|
||||
@@ -311,11 +308,8 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
jetImportsFactory.setProject(project);
|
||||
|
||||
scriptHeaderResolver.setPackageFragmentProvider(mutablePackageFragmentProvider);
|
||||
scriptHeaderResolver.setScriptParameterResolver(scriptParameterResolver);
|
||||
scriptHeaderResolver.setTrace(bindingTrace);
|
||||
|
||||
scriptParameterResolver.setDependencyClassByQualifiedNameResolver(javaDescriptorResolver);
|
||||
|
||||
overloadResolver.setTrace(bindingTrace);
|
||||
|
||||
overrideResolver.setTrace(bindingTrace);
|
||||
|
||||
@@ -24,7 +24,6 @@ import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
||||
import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactory;
|
||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
||||
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl;
|
||||
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
|
||||
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
|
||||
import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
|
||||
@@ -44,7 +43,6 @@ import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
|
||||
import org.jetbrains.jet.lang.psi.JetImportsFactory;
|
||||
import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider;
|
||||
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
|
||||
import org.jetbrains.jet.lang.resolve.ScriptParameterResolver;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import javax.annotation.PreDestroy;
|
||||
|
||||
@@ -60,7 +58,6 @@ public class InjectorForLazyResolve {
|
||||
private final DeclarationProviderFactory declarationProviderFactory;
|
||||
private final BindingTrace bindingTrace;
|
||||
private final ResolveSession resolveSession;
|
||||
private final DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy;
|
||||
private final AnnotationResolver annotationResolver;
|
||||
private final CallResolver callResolver;
|
||||
private final ArgumentTypeResolver argumentTypeResolver;
|
||||
@@ -80,7 +77,6 @@ public class InjectorForLazyResolve {
|
||||
private final JetImportsFactory jetImportsFactory;
|
||||
private final ScopeProvider scopeProvider;
|
||||
private final ScriptBodyResolver scriptBodyResolver;
|
||||
private final ScriptParameterResolver scriptParameterResolver;
|
||||
|
||||
public InjectorForLazyResolve(
|
||||
@NotNull Project project,
|
||||
@@ -97,7 +93,6 @@ public class InjectorForLazyResolve {
|
||||
this.declarationProviderFactory = declarationProviderFactory;
|
||||
this.bindingTrace = bindingTrace;
|
||||
this.resolveSession = new ResolveSession(project, globalContext, moduleDescriptor, declarationProviderFactory, bindingTrace);
|
||||
this.dependencyClassByQualifiedNameResolverDummy = new DependencyClassByQualifiedNameResolverDummyImpl();
|
||||
this.annotationResolver = new AnnotationResolver();
|
||||
this.callResolver = new CallResolver();
|
||||
this.argumentTypeResolver = new ArgumentTypeResolver();
|
||||
@@ -117,7 +112,6 @@ public class InjectorForLazyResolve {
|
||||
this.jetImportsFactory = new JetImportsFactory();
|
||||
this.scopeProvider = new ScopeProvider(getResolveSession());
|
||||
this.scriptBodyResolver = new ScriptBodyResolver();
|
||||
this.scriptParameterResolver = new ScriptParameterResolver();
|
||||
|
||||
this.resolveSession.setAnnotationResolve(annotationResolver);
|
||||
this.resolveSession.setDescriptorResolver(descriptorResolver);
|
||||
@@ -125,7 +119,6 @@ public class InjectorForLazyResolve {
|
||||
this.resolveSession.setQualifiedExpressionResolver(qualifiedExpressionResolver);
|
||||
this.resolveSession.setScopeProvider(scopeProvider);
|
||||
this.resolveSession.setScriptBodyResolver(scriptBodyResolver);
|
||||
this.resolveSession.setScriptParameterResolver(scriptParameterResolver);
|
||||
this.resolveSession.setTypeResolver(typeResolver);
|
||||
|
||||
annotationResolver.setCallResolver(callResolver);
|
||||
@@ -182,8 +175,6 @@ public class InjectorForLazyResolve {
|
||||
|
||||
scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
|
||||
|
||||
scriptParameterResolver.setDependencyClassByQualifiedNameResolver(dependencyClassByQualifiedNameResolverDummy);
|
||||
|
||||
}
|
||||
|
||||
@PreDestroy
|
||||
|
||||
@@ -25,7 +25,6 @@ import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
||||
import org.jetbrains.jet.lang.resolve.TopDownAnalyzer;
|
||||
import org.jetbrains.jet.lang.resolve.LazyTopDownAnalyzer;
|
||||
import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider;
|
||||
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl;
|
||||
import org.jetbrains.jet.lang.resolve.BodyResolver;
|
||||
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
|
||||
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
|
||||
@@ -51,7 +50,6 @@ import org.jetbrains.jet.lang.resolve.DeclarationResolver;
|
||||
import org.jetbrains.jet.lang.resolve.ImportsResolver;
|
||||
import org.jetbrains.jet.lang.psi.JetImportsFactory;
|
||||
import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver;
|
||||
import org.jetbrains.jet.lang.resolve.ScriptParameterResolver;
|
||||
import org.jetbrains.jet.lang.resolve.OverloadResolver;
|
||||
import org.jetbrains.jet.lang.resolve.OverrideResolver;
|
||||
import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
|
||||
@@ -71,7 +69,6 @@ public class InjectorForTopDownAnalyzerBasic {
|
||||
private final TopDownAnalyzer topDownAnalyzer;
|
||||
private final LazyTopDownAnalyzer lazyTopDownAnalyzer;
|
||||
private final MutablePackageFragmentProvider mutablePackageFragmentProvider;
|
||||
private final DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy;
|
||||
private final BodyResolver bodyResolver;
|
||||
private final AnnotationResolver annotationResolver;
|
||||
private final CallResolver callResolver;
|
||||
@@ -97,7 +94,6 @@ public class InjectorForTopDownAnalyzerBasic {
|
||||
private final ImportsResolver importsResolver;
|
||||
private final JetImportsFactory jetImportsFactory;
|
||||
private final ScriptHeaderResolver scriptHeaderResolver;
|
||||
private final ScriptParameterResolver scriptParameterResolver;
|
||||
private final OverloadResolver overloadResolver;
|
||||
private final OverrideResolver overrideResolver;
|
||||
private final TypeHierarchyResolver typeHierarchyResolver;
|
||||
@@ -117,7 +113,6 @@ public class InjectorForTopDownAnalyzerBasic {
|
||||
this.topDownAnalyzer = new TopDownAnalyzer();
|
||||
this.lazyTopDownAnalyzer = new LazyTopDownAnalyzer();
|
||||
this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor());
|
||||
this.dependencyClassByQualifiedNameResolverDummy = new DependencyClassByQualifiedNameResolverDummyImpl();
|
||||
this.bodyResolver = new BodyResolver();
|
||||
this.annotationResolver = new AnnotationResolver();
|
||||
this.callResolver = new CallResolver();
|
||||
@@ -143,7 +138,6 @@ public class InjectorForTopDownAnalyzerBasic {
|
||||
this.importsResolver = new ImportsResolver();
|
||||
this.jetImportsFactory = new JetImportsFactory();
|
||||
this.scriptHeaderResolver = new ScriptHeaderResolver();
|
||||
this.scriptParameterResolver = new ScriptParameterResolver();
|
||||
this.overloadResolver = new OverloadResolver();
|
||||
this.overrideResolver = new OverrideResolver();
|
||||
this.typeHierarchyResolver = new TypeHierarchyResolver();
|
||||
@@ -249,11 +243,8 @@ public class InjectorForTopDownAnalyzerBasic {
|
||||
jetImportsFactory.setProject(project);
|
||||
|
||||
scriptHeaderResolver.setPackageFragmentProvider(mutablePackageFragmentProvider);
|
||||
scriptHeaderResolver.setScriptParameterResolver(scriptParameterResolver);
|
||||
scriptHeaderResolver.setTrace(bindingTrace);
|
||||
|
||||
scriptParameterResolver.setDependencyClassByQualifiedNameResolver(dependencyClassByQualifiedNameResolverDummy);
|
||||
|
||||
overloadResolver.setTrace(bindingTrace);
|
||||
|
||||
overrideResolver.setTrace(bindingTrace);
|
||||
|
||||
@@ -18,30 +18,26 @@ package org.jetbrains.jet.lang.resolve;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
import org.jetbrains.jet.lang.types.ref.JetTypeName;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
|
||||
public class AnalyzerScriptParameter {
|
||||
@NotNull
|
||||
private final Name name;
|
||||
@NotNull
|
||||
private final JetTypeName type;
|
||||
private final JetType type;
|
||||
|
||||
public AnalyzerScriptParameter(@NotNull Name name, @NotNull JetTypeName type) {
|
||||
public AnalyzerScriptParameter(@NotNull Name name, @NotNull JetType type) {
|
||||
this.name = name;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public AnalyzerScriptParameter(@NotNull String name, @NotNull String type) {
|
||||
this(Name.identifier(name), JetTypeName.parse(type));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Name getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public JetTypeName getType() {
|
||||
public JetType getType() {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,8 +42,6 @@ public class ScriptHeaderResolver {
|
||||
@NotNull
|
||||
private MutablePackageFragmentProvider packageFragmentProvider;
|
||||
@NotNull
|
||||
private ScriptParameterResolver scriptParameterResolver;
|
||||
@NotNull
|
||||
private BindingTrace trace;
|
||||
|
||||
@Inject
|
||||
@@ -51,11 +49,6 @@ public class ScriptHeaderResolver {
|
||||
this.packageFragmentProvider = packageFragmentProvider;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setScriptParameterResolver(@NotNull ScriptParameterResolver scriptParameterResolver) {
|
||||
this.scriptParameterResolver = scriptParameterResolver;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setTrace(@NotNull BindingTrace trace) {
|
||||
this.trace = trace;
|
||||
@@ -90,12 +83,12 @@ public class ScriptHeaderResolver {
|
||||
return priority == null ? 0 : priority;
|
||||
}
|
||||
|
||||
public void resolveScriptDeclarations(@NotNull TopDownAnalysisContext c) {
|
||||
public static void resolveScriptDeclarations(@NotNull TopDownAnalysisContext c) {
|
||||
for (Map.Entry<JetScript, ScriptDescriptor> e : c.getScripts().entrySet()) {
|
||||
JetScript declaration = e.getKey();
|
||||
ScriptDescriptorImpl descriptor = (ScriptDescriptorImpl) e.getValue();
|
||||
|
||||
List<ValueParameterDescriptor> valueParameters = scriptParameterResolver.resolveScriptParameters(
|
||||
List<ValueParameterDescriptor> valueParameters = ScriptParameterResolver.resolveScriptParameters(
|
||||
declaration,
|
||||
descriptor
|
||||
);
|
||||
|
||||
@@ -18,7 +18,6 @@ package org.jetbrains.jet.lang.resolve;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.ScriptDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.annotations.Annotations;
|
||||
@@ -27,28 +26,13 @@ import org.jetbrains.jet.lang.parsing.JetScriptDefinition;
|
||||
import org.jetbrains.jet.lang.parsing.JetScriptDefinitionProvider;
|
||||
import org.jetbrains.jet.lang.psi.JetFile;
|
||||
import org.jetbrains.jet.lang.psi.JetScript;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolver;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
import org.jetbrains.jet.lang.types.TypeUtils;
|
||||
import org.jetbrains.jet.lang.types.ref.JetTypeName;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
// SCRIPT: Resolve script parameters
|
||||
public class ScriptParameterResolver {
|
||||
public final class ScriptParameterResolver {
|
||||
@NotNull
|
||||
private DependencyClassByQualifiedNameResolver dependencyClassByQualifiedNameResolver;
|
||||
|
||||
@Inject
|
||||
public void setDependencyClassByQualifiedNameResolver(@NotNull DependencyClassByQualifiedNameResolver dependencyClassByQualifiedNameResolver) {
|
||||
this.dependencyClassByQualifiedNameResolver = dependencyClassByQualifiedNameResolver;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public List<ValueParameterDescriptor> resolveScriptParameters(
|
||||
public static List<ValueParameterDescriptor> resolveScriptParameters(
|
||||
@NotNull JetScript declaration,
|
||||
@NotNull ScriptDescriptor scriptDescriptor
|
||||
) {
|
||||
@@ -67,31 +51,15 @@ public class ScriptParameterResolver {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private ClassDescriptor resolveClass(@NotNull FqName className) {
|
||||
ClassDescriptor classDescriptor = dependencyClassByQualifiedNameResolver.resolveClass(className);
|
||||
if (classDescriptor == null) {
|
||||
throw new IllegalStateException("dependency class not found by name: " + className);
|
||||
}
|
||||
return classDescriptor;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public JetType resolveTypeName(@NotNull JetTypeName typeName) {
|
||||
List<JetType> typeArguments = new ArrayList<JetType>();
|
||||
for (JetTypeName typeArgumentName : typeName.getArguments()) {
|
||||
typeArguments.add(resolveTypeName(typeArgumentName));
|
||||
}
|
||||
ClassDescriptor classDescriptor = resolveClass(typeName.getClassName());
|
||||
return TypeUtils.substituteParameters(classDescriptor, typeArguments);
|
||||
}
|
||||
|
||||
|
||||
@NotNull
|
||||
private ValueParameterDescriptor resolveScriptParameter(
|
||||
private static ValueParameterDescriptor resolveScriptParameter(
|
||||
@NotNull AnalyzerScriptParameter scriptParameter,
|
||||
int index,
|
||||
@NotNull ScriptDescriptor script) {
|
||||
JetType type = resolveTypeName(scriptParameter.getType());
|
||||
return new ValueParameterDescriptorImpl(script, null, index, Annotations.EMPTY, scriptParameter.getName(), type, false, null);
|
||||
@NotNull ScriptDescriptor script
|
||||
) {
|
||||
return new ValueParameterDescriptorImpl(script, null, index, Annotations.EMPTY, scriptParameter.getName(),
|
||||
scriptParameter.getType(), false, null);
|
||||
}
|
||||
|
||||
private ScriptParameterResolver() {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,7 +80,6 @@ public class ResolveSession implements KotlinCodeAnalyzer {
|
||||
private DescriptorResolver descriptorResolver;
|
||||
private TypeResolver typeResolver;
|
||||
private QualifiedExpressionResolver qualifiedExpressionResolver;
|
||||
private ScriptParameterResolver scriptParameterResolver;
|
||||
private ScriptBodyResolver scriptBodyResolver;
|
||||
|
||||
@Inject
|
||||
@@ -113,11 +112,6 @@ public class ResolveSession implements KotlinCodeAnalyzer {
|
||||
this.scopeProvider = scopeProvider;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setScriptParameterResolver(ScriptParameterResolver scriptParameterResolver) {
|
||||
this.scriptParameterResolver = scriptParameterResolver;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setScriptBodyResolver(ScriptBodyResolver scriptBodyResolver) {
|
||||
this.scriptBodyResolver = scriptBodyResolver;
|
||||
@@ -177,7 +171,6 @@ public class ResolveSession implements KotlinCodeAnalyzer {
|
||||
public LazyScriptDescriptor invoke(JetScript script) {
|
||||
return new LazyScriptDescriptor(
|
||||
ResolveSession.this,
|
||||
scriptParameterResolver,
|
||||
scriptBodyResolver,
|
||||
script,
|
||||
ScriptHeaderResolver.getScriptPriority(script)
|
||||
|
||||
+1
-13
@@ -26,15 +26,9 @@ import org.jetbrains.jet.lang.resolve.scopes.receivers.ScriptReceiver
|
||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns
|
||||
import org.jetbrains.jet.lang.descriptors.impl.ReceiverParameterDescriptorImpl
|
||||
import org.jetbrains.jet.lang.resolve.BindingContext
|
||||
import org.jetbrains.jet.lang.psi.JetFile
|
||||
import org.jetbrains.kotlin.util.sure
|
||||
import org.jetbrains.jet.lang.resolve.ScriptParameterResolver
|
||||
import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters
|
||||
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver
|
||||
import org.jetbrains.jet.lang.resolve.lazy.data.JetClassLikeInfo
|
||||
import org.jetbrains.jet.lang.resolve.ScriptNameUtil
|
||||
import org.jetbrains.jet.lang.descriptors.ClassKind
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor
|
||||
import org.jetbrains.jet.lang.descriptors.impl.ScriptCodeDescriptor
|
||||
import org.jetbrains.jet.lang.types.DeferredType
|
||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope
|
||||
@@ -43,17 +37,11 @@ import org.jetbrains.jet.lang.resolve.scopes.ChainedScope
|
||||
import org.jetbrains.jet.lang.resolve.lazy.ForceResolveUtil
|
||||
import org.jetbrains.jet.lang.types.TypeSubstitutor
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptorVisitor
|
||||
import org.jetbrains.jet.lang.psi.JetParameter
|
||||
import org.jetbrains.jet.lang.psi.JetTypeParameter
|
||||
import org.jetbrains.jet.lang.resolve.scopes.RedeclarationHandler
|
||||
import org.jetbrains.jet.lang.psi.JetCallableDeclaration
|
||||
import org.jetbrains.jet.lang.resolve.scopes.WritableScope
|
||||
import org.jetbrains.jet.lang.resolve.BindingTrace
|
||||
import org.jetbrains.jet.lang.resolve.TemporaryBindingTrace
|
||||
|
||||
public class LazyScriptDescriptor(
|
||||
val resolveSession: ResolveSession,
|
||||
scriptParameterResolver: ScriptParameterResolver,
|
||||
scriptBodyResolver: ScriptBodyResolver,
|
||||
val jetScript: JetScript,
|
||||
val _priority: Int
|
||||
@@ -82,7 +70,7 @@ public class LazyScriptDescriptor(
|
||||
val result = ScriptCodeDescriptor(this)
|
||||
result.initialize(
|
||||
_implicitReceiver,
|
||||
scriptParameterResolver.resolveScriptParameters(jetScript, this),
|
||||
ScriptParameterResolver.resolveScriptParameters(jetScript, this),
|
||||
DeferredType.create(resolveSession.getStorageManager(), resolveSession.getTrace()) {
|
||||
scriptBodyResolver.resolveScriptReturnType(jetScript, this, resolveSession.getTrace())
|
||||
}
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2013 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.jet.lang.types.ref;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class JetTypeName {
|
||||
// generic types one day
|
||||
private final FqName className;
|
||||
private final List<JetTypeName> arguments;
|
||||
|
||||
public JetTypeName(@NotNull FqName className, @NotNull List<JetTypeName> arguments) {
|
||||
this.className = className;
|
||||
this.arguments = arguments;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public FqName getClassName() {
|
||||
return className;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public List<JetTypeName> getArguments() {
|
||||
return arguments;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static JetTypeName fromJavaClass(@NotNull Class<?> clazz) {
|
||||
if (clazz.getTypeParameters().length != 0) {
|
||||
throw new IllegalArgumentException("cannot create type reference: actual type parameters unknown: " + clazz);
|
||||
}
|
||||
FqName fqName = new FqName(clazz.getName());
|
||||
return withoutParameters(fqName);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static JetTypeName withoutParameters(@NotNull FqName fqName) {
|
||||
return new JetTypeName(fqName, Collections.<JetTypeName>emptyList());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static JetTypeName parse(@NotNull String value) {
|
||||
return JetTypeNameParser.parse(value);
|
||||
}
|
||||
}
|
||||
@@ -1,71 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2013 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.jet.lang.types.ref;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
class JetTypeNameParser extends SimpleParser {
|
||||
public JetTypeNameParser(String input) {
|
||||
super(input);
|
||||
}
|
||||
|
||||
|
||||
private static final Pattern namePattern = Pattern.compile("(?i)[a-z][a-z0-9]*");
|
||||
|
||||
@NotNull
|
||||
public Name parseName() {
|
||||
return Name.identifier(consume(namePattern));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public FqName parseFqName() {
|
||||
FqName fqName = FqName.topLevel(parseName());
|
||||
while (consumeIfLookingAt('.')) {
|
||||
fqName = fqName.child(parseName());
|
||||
}
|
||||
return fqName;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public JetTypeName parse() {
|
||||
FqName fqName = parseFqName();
|
||||
List<JetTypeName> typeArguments = Lists.newArrayList();
|
||||
if (consumeIfLookingAt('<')) {
|
||||
typeArguments.add(parse());
|
||||
while (consumeIfLookingAt(',')) {
|
||||
typeArguments.add(parse());
|
||||
}
|
||||
consume('>');
|
||||
}
|
||||
return new JetTypeName(fqName, typeArguments);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static JetTypeName parse(@NotNull String string) {
|
||||
JetTypeNameParser parser = new JetTypeNameParser(string);
|
||||
JetTypeName typeName = parser.parse();
|
||||
parser.checkEof();
|
||||
return typeName;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,90 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2013 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.jet.lang.types.ref;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
class SimpleParser {
|
||||
|
||||
private final String input;
|
||||
private int position = 0;
|
||||
|
||||
public SimpleParser(@NotNull String input) {
|
||||
this.input = input;
|
||||
}
|
||||
|
||||
public void checkEof() {
|
||||
if (!lookingAtEof()) {
|
||||
throw new IllegalStateException("expecting EOF");
|
||||
}
|
||||
}
|
||||
|
||||
public void checkNotEof() {
|
||||
if (lookingAtEof()) {
|
||||
throw new IllegalStateException("unexpected EOF");
|
||||
}
|
||||
}
|
||||
|
||||
public boolean lookingAtEof() {
|
||||
return position == input.length();
|
||||
}
|
||||
|
||||
public char peek() {
|
||||
checkNotEof();
|
||||
return input.charAt(position);
|
||||
}
|
||||
|
||||
public boolean lookingAt(char c) {
|
||||
return !lookingAtEof() && peek() == c;
|
||||
}
|
||||
|
||||
public char next() {
|
||||
checkNotEof();
|
||||
return input.charAt(position++);
|
||||
}
|
||||
|
||||
public void consume(char c) {
|
||||
char next = next();
|
||||
if (next != c) {
|
||||
throw new IllegalStateException("invalid next, expecting " + c + ", actual " + next);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean consumeIfLookingAt(char c) {
|
||||
if (lookingAt(c)) {
|
||||
consume(c);
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String consume(@NotNull Pattern pattern) {
|
||||
Matcher matcher = pattern.matcher(input.substring(position));
|
||||
if (!matcher.lookingAt()) {
|
||||
throw new IllegalStateException("expecting " + pattern + " at pos " + position);
|
||||
}
|
||||
String r = matcher.group();
|
||||
position += r.length();
|
||||
return r;
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,7 @@ import org.jetbrains.jet.lang.parsing.JetScriptDefinition;
|
||||
import org.jetbrains.jet.lang.parsing.JetScriptDefinitionProvider;
|
||||
import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
import org.jetbrains.jet.lang.types.ref.JetTypeName;
|
||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||
import org.jetbrains.jet.utils.KotlinPaths;
|
||||
import org.jetbrains.jet.utils.PathUtil;
|
||||
import org.junit.Test;
|
||||
@@ -106,6 +106,6 @@ public class ScriptTest {
|
||||
|
||||
@NotNull
|
||||
private static List<AnalyzerScriptParameter> numIntParam() {
|
||||
return Collections.singletonList(new AnalyzerScriptParameter(Name.identifier("num"), JetTypeName.parse("kotlin.Int")));
|
||||
return Collections.singletonList(new AnalyzerScriptParameter(Name.identifier("num"), KotlinBuiltIns.getInstance().getIntType()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,8 @@ import org.jetbrains.jet.lang.parsing.JetScriptDefinitionProvider;
|
||||
import org.jetbrains.jet.lang.psi.JetFile;
|
||||
import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
import org.jetbrains.jet.lang.types.ref.JetTypeName;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
@@ -121,23 +122,29 @@ public class CodegenTestFiles {
|
||||
String valueString = scriptParametersMatcher.group(3);
|
||||
Object value;
|
||||
|
||||
JetType jetType;
|
||||
KotlinBuiltIns builtIns = KotlinBuiltIns.getInstance();
|
||||
if (type.equals("kotlin.String")) {
|
||||
value = valueString;
|
||||
jetType = builtIns.getStringType();
|
||||
}
|
||||
else if (type.equals("kotlin.Long")) {
|
||||
value = Long.parseLong(valueString);
|
||||
jetType = builtIns.getLongType();
|
||||
}
|
||||
else if (type.equals("kotlin.Int")) {
|
||||
value = Integer.parseInt(valueString);
|
||||
jetType = builtIns.getIntType();
|
||||
}
|
||||
else if (type.equals("kotlin.Array<kotlin.String>")) {
|
||||
value = valueString.split(" ");
|
||||
jetType = builtIns.getArrayType(builtIns.getStringType());
|
||||
}
|
||||
else {
|
||||
throw new AssertionError("TODO: " + type);
|
||||
}
|
||||
|
||||
scriptParameterTypes.add(new AnalyzerScriptParameter(Name.identifier(name), JetTypeName.parse(type)));
|
||||
scriptParameterTypes.add(new AnalyzerScriptParameter(Name.identifier(name), jetType));
|
||||
scriptParameterValues.add(value);
|
||||
}
|
||||
|
||||
|
||||
@@ -24,6 +24,8 @@ import org.jetbrains.jet.lang.parsing.JetScriptDefinitionProvider;
|
||||
import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
|
||||
import org.jetbrains.jet.lang.resolve.ScriptNameUtil;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||
import org.jetbrains.jet.utils.UtilsPackage;
|
||||
import org.jetbrains.org.objectweb.asm.Opcodes;
|
||||
|
||||
@@ -35,7 +37,8 @@ public class ScriptGenTest extends CodegenTestCase {
|
||||
protected Object scriptInstance;
|
||||
|
||||
public static final JetScriptDefinition FIB_SCRIPT_DEFINITION =
|
||||
new JetScriptDefinition(".lang.kt", new AnalyzerScriptParameter("num", "kotlin.Int"));
|
||||
new JetScriptDefinition(".lang.kt",
|
||||
new AnalyzerScriptParameter(Name.identifier("num"), KotlinBuiltIns.getInstance().getIntType()));
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
|
||||
@@ -25,7 +25,6 @@ import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
||||
import org.jetbrains.jet.lang.resolve.TopDownAnalyzer;
|
||||
import org.jetbrains.jet.lang.resolve.LazyTopDownAnalyzer;
|
||||
import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider;
|
||||
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl;
|
||||
import org.jetbrains.jet.lang.resolve.BodyResolver;
|
||||
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
|
||||
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
|
||||
@@ -51,7 +50,6 @@ import org.jetbrains.jet.lang.resolve.DeclarationResolver;
|
||||
import org.jetbrains.jet.lang.resolve.ImportsResolver;
|
||||
import org.jetbrains.jet.lang.psi.JetImportsFactory;
|
||||
import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver;
|
||||
import org.jetbrains.jet.lang.resolve.ScriptParameterResolver;
|
||||
import org.jetbrains.jet.lang.resolve.OverloadResolver;
|
||||
import org.jetbrains.jet.lang.resolve.OverrideResolver;
|
||||
import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
|
||||
@@ -71,7 +69,6 @@ public class InjectorForTopDownAnalyzerForJs {
|
||||
private final TopDownAnalyzer topDownAnalyzer;
|
||||
private final LazyTopDownAnalyzer lazyTopDownAnalyzer;
|
||||
private final MutablePackageFragmentProvider mutablePackageFragmentProvider;
|
||||
private final DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy;
|
||||
private final BodyResolver bodyResolver;
|
||||
private final AnnotationResolver annotationResolver;
|
||||
private final CallResolver callResolver;
|
||||
@@ -97,7 +94,6 @@ public class InjectorForTopDownAnalyzerForJs {
|
||||
private final ImportsResolver importsResolver;
|
||||
private final JetImportsFactory jetImportsFactory;
|
||||
private final ScriptHeaderResolver scriptHeaderResolver;
|
||||
private final ScriptParameterResolver scriptParameterResolver;
|
||||
private final OverloadResolver overloadResolver;
|
||||
private final OverrideResolver overrideResolver;
|
||||
private final TypeHierarchyResolver typeHierarchyResolver;
|
||||
@@ -117,7 +113,6 @@ public class InjectorForTopDownAnalyzerForJs {
|
||||
this.topDownAnalyzer = new TopDownAnalyzer();
|
||||
this.lazyTopDownAnalyzer = new LazyTopDownAnalyzer();
|
||||
this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor());
|
||||
this.dependencyClassByQualifiedNameResolverDummy = new DependencyClassByQualifiedNameResolverDummyImpl();
|
||||
this.bodyResolver = new BodyResolver();
|
||||
this.annotationResolver = new AnnotationResolver();
|
||||
this.callResolver = new CallResolver();
|
||||
@@ -143,7 +138,6 @@ public class InjectorForTopDownAnalyzerForJs {
|
||||
this.importsResolver = new ImportsResolver();
|
||||
this.jetImportsFactory = new JetImportsFactory();
|
||||
this.scriptHeaderResolver = new ScriptHeaderResolver();
|
||||
this.scriptParameterResolver = new ScriptParameterResolver();
|
||||
this.overloadResolver = new OverloadResolver();
|
||||
this.overrideResolver = new OverrideResolver();
|
||||
this.typeHierarchyResolver = new TypeHierarchyResolver();
|
||||
@@ -249,11 +243,8 @@ public class InjectorForTopDownAnalyzerForJs {
|
||||
jetImportsFactory.setProject(project);
|
||||
|
||||
scriptHeaderResolver.setPackageFragmentProvider(mutablePackageFragmentProvider);
|
||||
scriptHeaderResolver.setScriptParameterResolver(scriptParameterResolver);
|
||||
scriptHeaderResolver.setTrace(bindingTrace);
|
||||
|
||||
scriptParameterResolver.setDependencyClassByQualifiedNameResolver(dependencyClassByQualifiedNameResolverDummy);
|
||||
|
||||
overloadResolver.setTrace(bindingTrace);
|
||||
|
||||
overrideResolver.setTrace(bindingTrace);
|
||||
|
||||
Reference in New Issue
Block a user