Drop JetTypeName and related code

This commit is contained in:
Pavel V. Talanov
2014-06-10 16:50:33 +04:00
parent 8d2038ec1a
commit 024ed5a236
17 changed files with 36 additions and 354 deletions
@@ -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)
@@ -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);