diff --git a/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/CommandLineScriptUtils.java b/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/CommandLineScriptUtils.java index e51b653f1ed..9bb34659c73 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/CommandLineScriptUtils.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/jvm/compiler/CommandLineScriptUtils.java @@ -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 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); } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForLazyResolveWithJava.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForLazyResolveWithJava.java index b6cce7f96a1..fe64f388414 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForLazyResolveWithJava.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForLazyResolveWithJava.java @@ -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); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java index 3103b63f1fe..6f8294f7ef0 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java @@ -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); diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java index f9d7773710a..6ca9318696a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java @@ -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 diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java index d70201046e1..2b284bf45a6 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java @@ -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); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/AnalyzerScriptParameter.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/AnalyzerScriptParameter.java index b94c47663d2..394dc8cee3a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/AnalyzerScriptParameter.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/AnalyzerScriptParameter.java @@ -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; } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ScriptHeaderResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ScriptHeaderResolver.java index 529285d2586..90b04477248 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ScriptHeaderResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ScriptHeaderResolver.java @@ -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 e : c.getScripts().entrySet()) { JetScript declaration = e.getKey(); ScriptDescriptorImpl descriptor = (ScriptDescriptorImpl) e.getValue(); - List valueParameters = scriptParameterResolver.resolveScriptParameters( + List valueParameters = ScriptParameterResolver.resolveScriptParameters( declaration, descriptor ); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ScriptParameterResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ScriptParameterResolver.java index e9e1d37108f..9c090d90296 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ScriptParameterResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ScriptParameterResolver.java @@ -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 resolveScriptParameters( + public static List 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 typeArguments = new ArrayList(); - 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() { } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ResolveSession.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ResolveSession.java index 32ce20a87f2..f0ddcf70649 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ResolveSession.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ResolveSession.java @@ -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) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyScriptDescriptor.kt b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyScriptDescriptor.kt index 57d1df91787..db26485b29a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyScriptDescriptor.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyScriptDescriptor.kt @@ -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()) } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/ref/JetTypeName.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/ref/JetTypeName.java deleted file mode 100644 index 2541501061b..00000000000 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/ref/JetTypeName.java +++ /dev/null @@ -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 arguments; - - public JetTypeName(@NotNull FqName className, @NotNull List arguments) { - this.className = className; - this.arguments = arguments; - } - - @NotNull - public FqName getClassName() { - return className; - } - - @NotNull - public List 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.emptyList()); - } - - @NotNull - public static JetTypeName parse(@NotNull String value) { - return JetTypeNameParser.parse(value); - } -} diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/ref/JetTypeNameParser.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/ref/JetTypeNameParser.java deleted file mode 100644 index c815579df72..00000000000 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/ref/JetTypeNameParser.java +++ /dev/null @@ -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 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; - } - -} diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/ref/SimpleParser.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/ref/SimpleParser.java deleted file mode 100644 index 863da43dc1d..00000000000 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/ref/SimpleParser.java +++ /dev/null @@ -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; - } -} diff --git a/compiler/tests/org/jetbrains/jet/ScriptTest.java b/compiler/tests/org/jetbrains/jet/ScriptTest.java index d82be76a10b..93c5c8f4053 100644 --- a/compiler/tests/org/jetbrains/jet/ScriptTest.java +++ b/compiler/tests/org/jetbrains/jet/ScriptTest.java @@ -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 numIntParam() { - return Collections.singletonList(new AnalyzerScriptParameter(Name.identifier("num"), JetTypeName.parse("kotlin.Int"))); + return Collections.singletonList(new AnalyzerScriptParameter(Name.identifier("num"), KotlinBuiltIns.getInstance().getIntType())); } } diff --git a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestFiles.java b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestFiles.java index 077a9c7738c..bed42dd2408 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestFiles.java +++ b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestFiles.java @@ -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")) { 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); } diff --git a/compiler/tests/org/jetbrains/jet/codegen/ScriptGenTest.java b/compiler/tests/org/jetbrains/jet/codegen/ScriptGenTest.java index 1fcf74060ab..a5c383a941a 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/ScriptGenTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/ScriptGenTest.java @@ -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 { diff --git a/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java b/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java index 5c7d6961076..5e2bdf82900 100644 --- a/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java +++ b/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java @@ -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);