Merge remote-tracking branch 'origin/master' into incremental
This commit is contained in:
@@ -19,7 +19,6 @@ package org.jetbrains.jet.codegen;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.org.objectweb.asm.*;
|
||||
import org.jetbrains.jet.codegen.state.JetTypeMapper;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
import org.jetbrains.jet.lang.descriptors.annotations.Annotated;
|
||||
@@ -30,7 +29,6 @@ import org.jetbrains.jet.lang.psi.JetClass;
|
||||
import org.jetbrains.jet.lang.psi.JetModifierList;
|
||||
import org.jetbrains.jet.lang.psi.JetModifierListOwner;
|
||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall;
|
||||
import org.jetbrains.jet.lang.resolve.constants.*;
|
||||
import org.jetbrains.jet.lang.resolve.constants.StringValue;
|
||||
@@ -38,6 +36,7 @@ import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
import org.jetbrains.jet.lang.types.TypeUtils;
|
||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||
import org.jetbrains.org.objectweb.asm.*;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
@@ -46,7 +45,34 @@ import java.util.*;
|
||||
import static org.jetbrains.jet.lang.resolve.BindingContextUtils.descriptorToDeclaration;
|
||||
|
||||
public abstract class AnnotationCodegen {
|
||||
public static final FqName VOLATILE_FQ_NAME = new FqName("kotlin.volatile");
|
||||
|
||||
public static final class JvmFlagAnnotation {
|
||||
private final FqName fqName;
|
||||
private final int jvmFlag;
|
||||
|
||||
public JvmFlagAnnotation(@NotNull String fqName, int jvmFlag) {
|
||||
this.fqName = new FqName(fqName);
|
||||
this.jvmFlag = jvmFlag;
|
||||
}
|
||||
|
||||
public boolean hasAnnotation(@NotNull Annotated annotated) {
|
||||
return annotated.getAnnotations().findAnnotation(fqName) != null;
|
||||
}
|
||||
|
||||
public int getJvmFlag() {
|
||||
return jvmFlag;
|
||||
}
|
||||
}
|
||||
|
||||
public static final List<JvmFlagAnnotation> FIELD_FLAGS = Arrays.asList(
|
||||
new JvmFlagAnnotation("kotlin.jvm.volatile", Opcodes.ACC_VOLATILE),
|
||||
new JvmFlagAnnotation("kotlin.jvm.transient", Opcodes.ACC_TRANSIENT)
|
||||
);
|
||||
|
||||
public static final List<JvmFlagAnnotation> METHOD_FLAGS = Arrays.asList(
|
||||
new JvmFlagAnnotation("kotlin.jvm.strictfp", Opcodes.ACC_STRICT),
|
||||
new JvmFlagAnnotation("kotlin.jvm.synchronized", Opcodes.ACC_SYNCHRONIZED)
|
||||
);
|
||||
|
||||
private static final AnnotationVisitor NO_ANNOTATION_VISITOR = new AnnotationVisitor(Opcodes.ASM5) {};
|
||||
|
||||
@@ -91,7 +117,6 @@ public abstract class AnnotationCodegen {
|
||||
|
||||
AnnotationDescriptor annotationDescriptor = bindingContext.get(BindingContext.ANNOTATION, annotationEntry);
|
||||
if (annotationDescriptor == null) continue; // Skipping annotations if they are not resolved. Needed for JetLightClass generation
|
||||
if (isVolatile(annotationDescriptor)) continue;
|
||||
|
||||
String descriptor = genAnnotation(annotationDescriptor);
|
||||
if (descriptor != null) {
|
||||
@@ -149,11 +174,6 @@ public abstract class AnnotationCodegen {
|
||||
return !type.isNullable() && classifier instanceof TypeParameterDescriptor && TypeUtils.hasNullableSuperType(type);
|
||||
}
|
||||
|
||||
private static boolean isVolatile(@NotNull AnnotationDescriptor annotationDescriptor) {
|
||||
ClassifierDescriptor classDescriptor = annotationDescriptor.getType().getConstructor().getDeclarationDescriptor();
|
||||
return classDescriptor != null && DescriptorUtils.getFqName(classDescriptor).equals(VOLATILE_FQ_NAME.toUnsafe());
|
||||
}
|
||||
|
||||
public void generateAnnotationDefaultValue(@NotNull CompileTimeConstant value, @NotNull JetType expectedType) {
|
||||
AnnotationVisitor visitor = visitAnnotation(null, false); // Parameters are unimportant
|
||||
genCompileTimeValue(null, value, expectedType, visitor);
|
||||
|
||||
@@ -169,6 +169,12 @@ public class AsmUtil {
|
||||
public static int getMethodAsmFlags(FunctionDescriptor functionDescriptor, OwnerKind kind) {
|
||||
int flags = getCommonCallableFlags(functionDescriptor);
|
||||
|
||||
for (AnnotationCodegen.JvmFlagAnnotation flagAnnotation : AnnotationCodegen.METHOD_FLAGS) {
|
||||
if (flagAnnotation.hasAnnotation(functionDescriptor.getOriginal())) {
|
||||
flags |= flagAnnotation.getJvmFlag();
|
||||
}
|
||||
}
|
||||
|
||||
if (functionDescriptor.getModality() == Modality.FINAL && !(functionDescriptor instanceof ConstructorDescriptor)) {
|
||||
DeclarationDescriptor containingDeclaration = functionDescriptor.getContainingDeclaration();
|
||||
if (!(containingDeclaration instanceof ClassDescriptor) ||
|
||||
|
||||
@@ -189,8 +189,10 @@ public class PropertyCodegen {
|
||||
private FieldVisitor generateBackingField(JetNamedDeclaration element, PropertyDescriptor propertyDescriptor, boolean isDelegate, JetType jetType, Object defaultValue) {
|
||||
int modifiers = getDeprecatedAccessFlag(propertyDescriptor);
|
||||
|
||||
if (propertyDescriptor.getOriginal().getAnnotations().findAnnotation(AnnotationCodegen.VOLATILE_FQ_NAME) != null) {
|
||||
modifiers |= ACC_VOLATILE;
|
||||
for (AnnotationCodegen.JvmFlagAnnotation flagAnnotation : AnnotationCodegen.FIELD_FLAGS) {
|
||||
if (flagAnnotation.hasAnnotation(propertyDescriptor.getOriginal())) {
|
||||
modifiers |= flagAnnotation.getJvmFlag();
|
||||
}
|
||||
}
|
||||
|
||||
if (kind == OwnerKind.PACKAGE) {
|
||||
|
||||
+21
-24
@@ -33,10 +33,11 @@ import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
|
||||
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;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.DescriptorDeserializers;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorDeserializer;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.DeserializationGlobalContextForJava;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.JavaDescriptorFinder;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorLoader;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.DescriptorDeserializersStorage;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.ConstantDescriptorDeserializer;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.ConstantDescriptorLoader;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import javax.annotation.PreDestroy;
|
||||
|
||||
@@ -61,10 +62,11 @@ public class InjectorForJavaDescriptorResolver {
|
||||
private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider;
|
||||
private final GlobalJavaResolverContext globalJavaResolverContext;
|
||||
private final DeserializedDescriptorResolver deserializedDescriptorResolver;
|
||||
private final DescriptorDeserializers descriptorDeserializers;
|
||||
private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
|
||||
private final DeserializationGlobalContextForJava deserializationGlobalContextForJava;
|
||||
private final JavaDescriptorFinder javaDescriptorFinder;
|
||||
private final AnnotationDescriptorLoader annotationDescriptorLoader;
|
||||
private final DescriptorDeserializersStorage descriptorDeserializersStorage;
|
||||
private final ConstantDescriptorDeserializer constantDescriptorDeserializer;
|
||||
private final ConstantDescriptorLoader constantDescriptorLoader;
|
||||
|
||||
public InjectorForJavaDescriptorResolver(
|
||||
@NotNull Project project,
|
||||
@@ -87,10 +89,11 @@ public class InjectorForJavaDescriptorResolver {
|
||||
this.globalJavaResolverContext = new GlobalJavaResolverContext(lockBasedStorageManager, getJavaClassFinder(), virtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, traceBasedJavaResolverCache, javaPropertyInitializerEvaluator);
|
||||
this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule());
|
||||
this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModule());
|
||||
this.descriptorDeserializers = new DescriptorDeserializers();
|
||||
this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer();
|
||||
this.javaDescriptorFinder = new JavaDescriptorFinder(getJavaDescriptorResolver(), lazyJavaPackageFragmentProvider);
|
||||
this.annotationDescriptorLoader = new AnnotationDescriptorLoader();
|
||||
this.constantDescriptorLoader = new ConstantDescriptorLoader();
|
||||
this.deserializationGlobalContextForJava = new DeserializationGlobalContextForJava(lockBasedStorageManager, javaDescriptorFinder, annotationDescriptorLoader, constantDescriptorLoader, lazyJavaPackageFragmentProvider);
|
||||
this.descriptorDeserializersStorage = new DescriptorDeserializersStorage(lockBasedStorageManager);
|
||||
this.constantDescriptorDeserializer = new ConstantDescriptorDeserializer();
|
||||
|
||||
this.javaClassFinder.setProject(project);
|
||||
|
||||
@@ -105,27 +108,21 @@ public class InjectorForJavaDescriptorResolver {
|
||||
psiBasedMethodSignatureChecker.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
|
||||
psiBasedMethodSignatureChecker.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||
|
||||
deserializedDescriptorResolver.setDeserializers(descriptorDeserializers);
|
||||
deserializedDescriptorResolver.setContext(deserializationGlobalContextForJava);
|
||||
deserializedDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
|
||||
deserializedDescriptorResolver.setJavaDescriptorResolver(javaDescriptorResolver);
|
||||
deserializedDescriptorResolver.setJavaPackageFragmentProvider(lazyJavaPackageFragmentProvider);
|
||||
deserializedDescriptorResolver.setStorageManager(lockBasedStorageManager);
|
||||
|
||||
descriptorDeserializers.setAnnotationDescriptorDeserializer(annotationDescriptorDeserializer);
|
||||
descriptorDeserializers.setConstantDescriptorDeserializer(constantDescriptorDeserializer);
|
||||
|
||||
annotationDescriptorDeserializer.setClassResolver(javaDescriptorResolver);
|
||||
annotationDescriptorDeserializer.setErrorReporter(traceBasedErrorReporter);
|
||||
annotationDescriptorDeserializer.setKotlinClassFinder(virtualFileFinder);
|
||||
annotationDescriptorDeserializer.setStorage(descriptorDeserializersStorage);
|
||||
annotationDescriptorLoader.setClassResolver(javaDescriptorResolver);
|
||||
annotationDescriptorLoader.setErrorReporter(traceBasedErrorReporter);
|
||||
annotationDescriptorLoader.setKotlinClassFinder(virtualFileFinder);
|
||||
annotationDescriptorLoader.setStorage(descriptorDeserializersStorage);
|
||||
|
||||
descriptorDeserializersStorage.setClassResolver(javaDescriptorResolver);
|
||||
descriptorDeserializersStorage.setErrorReporter(traceBasedErrorReporter);
|
||||
|
||||
constantDescriptorDeserializer.setClassResolver(javaDescriptorResolver);
|
||||
constantDescriptorDeserializer.setErrorReporter(traceBasedErrorReporter);
|
||||
constantDescriptorDeserializer.setKotlinClassFinder(virtualFileFinder);
|
||||
constantDescriptorDeserializer.setStorage(descriptorDeserializersStorage);
|
||||
constantDescriptorLoader.setClassResolver(javaDescriptorResolver);
|
||||
constantDescriptorLoader.setErrorReporter(traceBasedErrorReporter);
|
||||
constantDescriptorLoader.setKotlinClassFinder(virtualFileFinder);
|
||||
constantDescriptorLoader.setStorage(descriptorDeserializersStorage);
|
||||
|
||||
javaClassFinder.initialize();
|
||||
|
||||
|
||||
+21
-24
@@ -55,10 +55,11 @@ import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
|
||||
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;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.DescriptorDeserializers;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorDeserializer;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.DeserializationGlobalContextForJava;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.JavaDescriptorFinder;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorLoader;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.DescriptorDeserializersStorage;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.ConstantDescriptorDeserializer;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.ConstantDescriptorLoader;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import javax.annotation.PreDestroy;
|
||||
|
||||
@@ -105,10 +106,11 @@ public class InjectorForLazyResolveWithJava {
|
||||
private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider;
|
||||
private final GlobalJavaResolverContext globalJavaResolverContext;
|
||||
private final DeserializedDescriptorResolver deserializedDescriptorResolver;
|
||||
private final DescriptorDeserializers descriptorDeserializers;
|
||||
private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
|
||||
private final DeserializationGlobalContextForJava deserializationGlobalContextForJava;
|
||||
private final JavaDescriptorFinder javaDescriptorFinder;
|
||||
private final AnnotationDescriptorLoader annotationDescriptorLoader;
|
||||
private final DescriptorDeserializersStorage descriptorDeserializersStorage;
|
||||
private final ConstantDescriptorDeserializer constantDescriptorDeserializer;
|
||||
private final ConstantDescriptorLoader constantDescriptorLoader;
|
||||
|
||||
public InjectorForLazyResolveWithJava(
|
||||
@NotNull Project project,
|
||||
@@ -155,10 +157,11 @@ public class InjectorForLazyResolveWithJava {
|
||||
this.jetImportsFactory = new JetImportsFactory();
|
||||
this.scopeProvider = new ScopeProvider(getResolveSession());
|
||||
this.scriptBodyResolver = new ScriptBodyResolver();
|
||||
this.descriptorDeserializers = new DescriptorDeserializers();
|
||||
this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer();
|
||||
this.javaDescriptorFinder = new JavaDescriptorFinder(getJavaDescriptorResolver(), lazyJavaPackageFragmentProvider);
|
||||
this.annotationDescriptorLoader = new AnnotationDescriptorLoader();
|
||||
this.constantDescriptorLoader = new ConstantDescriptorLoader();
|
||||
this.deserializationGlobalContextForJava = new DeserializationGlobalContextForJava(lockBasedStorageManager, javaDescriptorFinder, annotationDescriptorLoader, constantDescriptorLoader, lazyJavaPackageFragmentProvider);
|
||||
this.descriptorDeserializersStorage = new DescriptorDeserializersStorage(lockBasedStorageManager);
|
||||
this.constantDescriptorDeserializer = new ConstantDescriptorDeserializer();
|
||||
|
||||
this.resolveSession.setAnnotationResolve(annotationResolver);
|
||||
this.resolveSession.setDescriptorResolver(descriptorResolver);
|
||||
@@ -235,27 +238,21 @@ public class InjectorForLazyResolveWithJava {
|
||||
|
||||
scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
|
||||
|
||||
deserializedDescriptorResolver.setDeserializers(descriptorDeserializers);
|
||||
deserializedDescriptorResolver.setContext(deserializationGlobalContextForJava);
|
||||
deserializedDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
|
||||
deserializedDescriptorResolver.setJavaDescriptorResolver(javaDescriptorResolver);
|
||||
deserializedDescriptorResolver.setJavaPackageFragmentProvider(lazyJavaPackageFragmentProvider);
|
||||
deserializedDescriptorResolver.setStorageManager(lockBasedStorageManager);
|
||||
|
||||
descriptorDeserializers.setAnnotationDescriptorDeserializer(annotationDescriptorDeserializer);
|
||||
descriptorDeserializers.setConstantDescriptorDeserializer(constantDescriptorDeserializer);
|
||||
|
||||
annotationDescriptorDeserializer.setClassResolver(javaDescriptorResolver);
|
||||
annotationDescriptorDeserializer.setErrorReporter(traceBasedErrorReporter);
|
||||
annotationDescriptorDeserializer.setKotlinClassFinder(virtualFileFinder);
|
||||
annotationDescriptorDeserializer.setStorage(descriptorDeserializersStorage);
|
||||
annotationDescriptorLoader.setClassResolver(javaDescriptorResolver);
|
||||
annotationDescriptorLoader.setErrorReporter(traceBasedErrorReporter);
|
||||
annotationDescriptorLoader.setKotlinClassFinder(virtualFileFinder);
|
||||
annotationDescriptorLoader.setStorage(descriptorDeserializersStorage);
|
||||
|
||||
descriptorDeserializersStorage.setClassResolver(javaDescriptorResolver);
|
||||
descriptorDeserializersStorage.setErrorReporter(traceBasedErrorReporter);
|
||||
|
||||
constantDescriptorDeserializer.setClassResolver(javaDescriptorResolver);
|
||||
constantDescriptorDeserializer.setErrorReporter(traceBasedErrorReporter);
|
||||
constantDescriptorDeserializer.setKotlinClassFinder(virtualFileFinder);
|
||||
constantDescriptorDeserializer.setStorage(descriptorDeserializersStorage);
|
||||
constantDescriptorLoader.setClassResolver(javaDescriptorResolver);
|
||||
constantDescriptorLoader.setErrorReporter(traceBasedErrorReporter);
|
||||
constantDescriptorLoader.setKotlinClassFinder(virtualFileFinder);
|
||||
constantDescriptorLoader.setStorage(descriptorDeserializersStorage);
|
||||
|
||||
javaClassFinder.initialize();
|
||||
|
||||
|
||||
+30
-34
@@ -26,7 +26,7 @@ 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.resolve.java.JavaDescriptorResolver;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.DescriptorDeserializers;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.DeserializationGlobalContextForJava;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedExternalSignatureResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedJavaResolverCache;
|
||||
@@ -59,16 +59,17 @@ import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
|
||||
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.OverloadResolver;
|
||||
import org.jetbrains.jet.lang.resolve.OverrideResolver;
|
||||
import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
|
||||
import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver;
|
||||
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;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorDeserializer;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.JavaDescriptorFinder;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorLoader;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.DescriptorDeserializersStorage;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.ConstantDescriptorDeserializer;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.ConstantDescriptorLoader;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import javax.annotation.PreDestroy;
|
||||
|
||||
@@ -86,7 +87,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
private final LazyTopDownAnalyzer lazyTopDownAnalyzer;
|
||||
private final MutablePackageFragmentProvider mutablePackageFragmentProvider;
|
||||
private final JavaDescriptorResolver javaDescriptorResolver;
|
||||
private final DescriptorDeserializers descriptorDeserializers;
|
||||
private final DeserializationGlobalContextForJava deserializationGlobalContextForJava;
|
||||
private final JavaClassFinderImpl javaClassFinder;
|
||||
private final TraceBasedExternalSignatureResolver traceBasedExternalSignatureResolver;
|
||||
private final TraceBasedJavaResolverCache traceBasedJavaResolverCache;
|
||||
@@ -119,16 +120,17 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
private final DeclarationResolver declarationResolver;
|
||||
private final ImportsResolver importsResolver;
|
||||
private final JetImportsFactory jetImportsFactory;
|
||||
private final ScriptHeaderResolver scriptHeaderResolver;
|
||||
private final OverloadResolver overloadResolver;
|
||||
private final OverrideResolver overrideResolver;
|
||||
private final TypeHierarchyResolver typeHierarchyResolver;
|
||||
private final ScriptHeaderResolver scriptHeaderResolver;
|
||||
private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider;
|
||||
private final GlobalJavaResolverContext globalJavaResolverContext;
|
||||
private final DeserializedDescriptorResolver deserializedDescriptorResolver;
|
||||
private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
|
||||
private final JavaDescriptorFinder javaDescriptorFinder;
|
||||
private final AnnotationDescriptorLoader annotationDescriptorLoader;
|
||||
private final DescriptorDeserializersStorage descriptorDeserializersStorage;
|
||||
private final ConstantDescriptorDeserializer constantDescriptorDeserializer;
|
||||
private final ConstantDescriptorLoader constantDescriptorLoader;
|
||||
|
||||
public InjectorForTopDownAnalyzerForJvm(
|
||||
@NotNull Project project,
|
||||
@@ -157,7 +159,10 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
this.globalJavaResolverContext = new GlobalJavaResolverContext(storageManager, javaClassFinder, virtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, traceBasedJavaResolverCache, javaPropertyInitializerEvaluator);
|
||||
this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModuleDescriptor());
|
||||
this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModuleDescriptor());
|
||||
this.descriptorDeserializers = new DescriptorDeserializers();
|
||||
this.javaDescriptorFinder = new JavaDescriptorFinder(getJavaDescriptorResolver(), lazyJavaPackageFragmentProvider);
|
||||
this.annotationDescriptorLoader = new AnnotationDescriptorLoader();
|
||||
this.constantDescriptorLoader = new ConstantDescriptorLoader();
|
||||
this.deserializationGlobalContextForJava = new DeserializationGlobalContextForJava(storageManager, javaDescriptorFinder, annotationDescriptorLoader, constantDescriptorLoader, lazyJavaPackageFragmentProvider);
|
||||
this.bodyResolver = new BodyResolver();
|
||||
this.annotationResolver = new AnnotationResolver();
|
||||
this.callResolver = new CallResolver();
|
||||
@@ -182,13 +187,11 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
this.declarationResolver = new DeclarationResolver();
|
||||
this.importsResolver = new ImportsResolver();
|
||||
this.jetImportsFactory = new JetImportsFactory();
|
||||
this.scriptHeaderResolver = new ScriptHeaderResolver();
|
||||
this.overloadResolver = new OverloadResolver();
|
||||
this.overrideResolver = new OverrideResolver();
|
||||
this.typeHierarchyResolver = new TypeHierarchyResolver();
|
||||
this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer();
|
||||
this.scriptHeaderResolver = new ScriptHeaderResolver();
|
||||
this.descriptorDeserializersStorage = new DescriptorDeserializersStorage(storageManager);
|
||||
this.constantDescriptorDeserializer = new ConstantDescriptorDeserializer();
|
||||
|
||||
this.topDownAnalyzer.setBodyResolver(bodyResolver);
|
||||
this.topDownAnalyzer.setDeclarationResolver(declarationResolver);
|
||||
@@ -208,9 +211,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
this.lazyTopDownAnalyzer.setOverrideResolver(overrideResolver);
|
||||
this.lazyTopDownAnalyzer.setTrace(bindingTrace);
|
||||
|
||||
this.descriptorDeserializers.setAnnotationDescriptorDeserializer(annotationDescriptorDeserializer);
|
||||
this.descriptorDeserializers.setConstantDescriptorDeserializer(constantDescriptorDeserializer);
|
||||
|
||||
javaClassFinder.setProject(project);
|
||||
|
||||
traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
|
||||
@@ -296,7 +296,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
declarationResolver.setAnnotationResolver(annotationResolver);
|
||||
declarationResolver.setDescriptorResolver(descriptorResolver);
|
||||
declarationResolver.setImportsResolver(importsResolver);
|
||||
declarationResolver.setScriptHeaderResolver(scriptHeaderResolver);
|
||||
declarationResolver.setTrace(bindingTrace);
|
||||
|
||||
importsResolver.setImportsFactory(jetImportsFactory);
|
||||
@@ -306,9 +305,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
|
||||
jetImportsFactory.setProject(project);
|
||||
|
||||
scriptHeaderResolver.setPackageFragmentProvider(mutablePackageFragmentProvider);
|
||||
scriptHeaderResolver.setTrace(bindingTrace);
|
||||
|
||||
overloadResolver.setTrace(bindingTrace);
|
||||
|
||||
overrideResolver.setTrace(bindingTrace);
|
||||
@@ -319,24 +315,24 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
typeHierarchyResolver.setScriptHeaderResolver(scriptHeaderResolver);
|
||||
typeHierarchyResolver.setTrace(bindingTrace);
|
||||
|
||||
deserializedDescriptorResolver.setDeserializers(descriptorDeserializers);
|
||||
deserializedDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
|
||||
deserializedDescriptorResolver.setJavaDescriptorResolver(javaDescriptorResolver);
|
||||
deserializedDescriptorResolver.setJavaPackageFragmentProvider(lazyJavaPackageFragmentProvider);
|
||||
deserializedDescriptorResolver.setStorageManager(storageManager);
|
||||
scriptHeaderResolver.setPackageFragmentProvider(mutablePackageFragmentProvider);
|
||||
scriptHeaderResolver.setTrace(bindingTrace);
|
||||
|
||||
annotationDescriptorDeserializer.setClassResolver(javaDescriptorResolver);
|
||||
annotationDescriptorDeserializer.setErrorReporter(traceBasedErrorReporter);
|
||||
annotationDescriptorDeserializer.setKotlinClassFinder(virtualFileFinder);
|
||||
annotationDescriptorDeserializer.setStorage(descriptorDeserializersStorage);
|
||||
deserializedDescriptorResolver.setContext(deserializationGlobalContextForJava);
|
||||
deserializedDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
|
||||
|
||||
annotationDescriptorLoader.setClassResolver(javaDescriptorResolver);
|
||||
annotationDescriptorLoader.setErrorReporter(traceBasedErrorReporter);
|
||||
annotationDescriptorLoader.setKotlinClassFinder(virtualFileFinder);
|
||||
annotationDescriptorLoader.setStorage(descriptorDeserializersStorage);
|
||||
|
||||
descriptorDeserializersStorage.setClassResolver(javaDescriptorResolver);
|
||||
descriptorDeserializersStorage.setErrorReporter(traceBasedErrorReporter);
|
||||
|
||||
constantDescriptorDeserializer.setClassResolver(javaDescriptorResolver);
|
||||
constantDescriptorDeserializer.setErrorReporter(traceBasedErrorReporter);
|
||||
constantDescriptorDeserializer.setKotlinClassFinder(virtualFileFinder);
|
||||
constantDescriptorDeserializer.setStorage(descriptorDeserializersStorage);
|
||||
constantDescriptorLoader.setClassResolver(javaDescriptorResolver);
|
||||
constantDescriptorLoader.setErrorReporter(traceBasedErrorReporter);
|
||||
constantDescriptorLoader.setKotlinClassFinder(virtualFileFinder);
|
||||
constantDescriptorLoader.setStorage(descriptorDeserializersStorage);
|
||||
|
||||
javaClassFinder.initialize();
|
||||
|
||||
@@ -362,8 +358,8 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
return this.javaDescriptorResolver;
|
||||
}
|
||||
|
||||
public DescriptorDeserializers getDescriptorDeserializers() {
|
||||
return this.descriptorDeserializers;
|
||||
public DeserializationGlobalContextForJava getDeserializationGlobalContextForJava() {
|
||||
return this.deserializationGlobalContextForJava;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+2
-1
@@ -56,6 +56,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
|
||||
public static final List<ImportPath> DEFAULT_IMPORTS = ImmutableList.of(
|
||||
new ImportPath("java.lang.*"),
|
||||
new ImportPath("kotlin.*"),
|
||||
new ImportPath("kotlin.jvm.*"),
|
||||
new ImportPath("kotlin.io.*"),
|
||||
new ImportPath("kotlin.reflect.*")
|
||||
);
|
||||
@@ -153,7 +154,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
|
||||
module.addFragmentProvider(
|
||||
DependencyKind.SOURCES,
|
||||
new IncrementalPackageFragmentProvider(
|
||||
files, module, globalContext.getStorageManager(), injector.getDescriptorDeserializers(),
|
||||
files, module, globalContext.getStorageManager(), injector.getDeserializationGlobalContextForJava(),
|
||||
incrementalCache, moduleId, injector.getJavaDescriptorResolver()
|
||||
)
|
||||
);
|
||||
|
||||
+1
-1
@@ -72,6 +72,6 @@ public class PackagePartClassUtils {
|
||||
@NotNull
|
||||
public static FqName getPackagePartFqName(@NotNull DeserializedCallableMemberDescriptor callable) {
|
||||
FqName packageFqName = ((PackageFragmentDescriptor) callable.getContainingDeclaration()).getFqName();
|
||||
return packageFqName.child(BaseDescriptorDeserializer.getPackagePartClassName(callable));
|
||||
return packageFqName.child(BaseDescriptorLoader.getPackagePartClassName(callable));
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -27,7 +27,6 @@ import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptorImpl
|
||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope
|
||||
import org.jetbrains.jet.storage.StorageManager
|
||||
import org.jetbrains.jet.descriptors.serialization.descriptors.DeserializedPackageMemberScope
|
||||
import org.jetbrains.jet.descriptors.serialization.descriptors.Deserializers
|
||||
import org.jetbrains.jet.descriptors.serialization.DescriptorFinder
|
||||
import org.jetbrains.jet.descriptors.serialization.JavaProtoBufUtil
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver
|
||||
@@ -45,12 +44,13 @@ import org.jetbrains.jet.lang.resolve.kotlin.PackagePartClassUtils
|
||||
import org.jetbrains.jet.descriptors.serialization.JavaProtoBuf
|
||||
import org.jetbrains.jet.lang.resolve.java.JvmClassName
|
||||
import org.jetbrains.jet.descriptors.serialization.PackageData
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.DeserializationGlobalContextForJava
|
||||
|
||||
public class IncrementalPackageFragmentProvider(
|
||||
sourceFiles: Collection<JetFile>,
|
||||
val module: ModuleDescriptor,
|
||||
val storageManager: StorageManager,
|
||||
val deserializers: Deserializers,
|
||||
val deserializationContext: DeserializationGlobalContextForJava,
|
||||
val incrementalCache: IncrementalCache,
|
||||
val moduleId: String,
|
||||
val javaDescriptorResolver: JavaDescriptorResolver
|
||||
@@ -124,7 +124,7 @@ public class IncrementalPackageFragmentProvider(
|
||||
}
|
||||
|
||||
private inner class IncrementalPackageScope(val packageData: PackageData) : DeserializedPackageMemberScope(
|
||||
storageManager, this@IncrementalPackageFragment, deserializers, descriptorFinder, packageData
|
||||
this@IncrementalPackageFragment, packageData, deserializationContext
|
||||
) {
|
||||
override fun filteredMemberProtos(allMemberProtos: Collection<ProtoBuf.Callable>): Collection<ProtoBuf.Callable> {
|
||||
return allMemberProtos
|
||||
|
||||
@@ -49,10 +49,10 @@ import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
|
||||
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.OverloadResolver;
|
||||
import org.jetbrains.jet.lang.resolve.OverrideResolver;
|
||||
import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
|
||||
import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import javax.annotation.PreDestroy;
|
||||
|
||||
@@ -93,10 +93,10 @@ public class InjectorForTopDownAnalyzerBasic {
|
||||
private final DeclarationResolver declarationResolver;
|
||||
private final ImportsResolver importsResolver;
|
||||
private final JetImportsFactory jetImportsFactory;
|
||||
private final ScriptHeaderResolver scriptHeaderResolver;
|
||||
private final OverloadResolver overloadResolver;
|
||||
private final OverrideResolver overrideResolver;
|
||||
private final TypeHierarchyResolver typeHierarchyResolver;
|
||||
private final ScriptHeaderResolver scriptHeaderResolver;
|
||||
|
||||
public InjectorForTopDownAnalyzerBasic(
|
||||
@NotNull Project project,
|
||||
@@ -137,10 +137,10 @@ public class InjectorForTopDownAnalyzerBasic {
|
||||
this.declarationResolver = new DeclarationResolver();
|
||||
this.importsResolver = new ImportsResolver();
|
||||
this.jetImportsFactory = new JetImportsFactory();
|
||||
this.scriptHeaderResolver = new ScriptHeaderResolver();
|
||||
this.overloadResolver = new OverloadResolver();
|
||||
this.overrideResolver = new OverrideResolver();
|
||||
this.typeHierarchyResolver = new TypeHierarchyResolver();
|
||||
this.scriptHeaderResolver = new ScriptHeaderResolver();
|
||||
|
||||
this.topDownAnalyzer.setBodyResolver(bodyResolver);
|
||||
this.topDownAnalyzer.setDeclarationResolver(declarationResolver);
|
||||
@@ -232,7 +232,6 @@ public class InjectorForTopDownAnalyzerBasic {
|
||||
declarationResolver.setAnnotationResolver(annotationResolver);
|
||||
declarationResolver.setDescriptorResolver(descriptorResolver);
|
||||
declarationResolver.setImportsResolver(importsResolver);
|
||||
declarationResolver.setScriptHeaderResolver(scriptHeaderResolver);
|
||||
declarationResolver.setTrace(bindingTrace);
|
||||
|
||||
importsResolver.setImportsFactory(jetImportsFactory);
|
||||
@@ -242,9 +241,6 @@ public class InjectorForTopDownAnalyzerBasic {
|
||||
|
||||
jetImportsFactory.setProject(project);
|
||||
|
||||
scriptHeaderResolver.setPackageFragmentProvider(mutablePackageFragmentProvider);
|
||||
scriptHeaderResolver.setTrace(bindingTrace);
|
||||
|
||||
overloadResolver.setTrace(bindingTrace);
|
||||
|
||||
overrideResolver.setTrace(bindingTrace);
|
||||
@@ -255,6 +251,9 @@ public class InjectorForTopDownAnalyzerBasic {
|
||||
typeHierarchyResolver.setScriptHeaderResolver(scriptHeaderResolver);
|
||||
typeHierarchyResolver.setTrace(bindingTrace);
|
||||
|
||||
scriptHeaderResolver.setPackageFragmentProvider(mutablePackageFragmentProvider);
|
||||
scriptHeaderResolver.setTrace(bindingTrace);
|
||||
|
||||
}
|
||||
|
||||
@PreDestroy
|
||||
|
||||
+1
-1
@@ -93,7 +93,7 @@ public abstract class JetStubElementType<StubT extends StubElement, PsiT extends
|
||||
@Override
|
||||
public boolean shouldCreateStub(ASTNode node) {
|
||||
PsiElement psi = node.getPsi();
|
||||
if (ArrayUtil.contains(psi.getClass(), ALWAYS_CREATE_STUB_FOR)) {
|
||||
if (ArrayUtil.contains(psi.getClass(), (Object[]) ALWAYS_CREATE_STUB_FOR)) {
|
||||
return true;
|
||||
}
|
||||
if (psi instanceof JetDeclaration) {
|
||||
|
||||
@@ -45,6 +45,7 @@ import javax.inject.Inject;
|
||||
import java.util.*;
|
||||
|
||||
import static org.jetbrains.jet.lang.diagnostics.Errors.REDECLARATION;
|
||||
import static org.jetbrains.jet.lang.resolve.ScriptHeaderResolver.resolveScriptDeclarations;
|
||||
|
||||
public class DeclarationResolver {
|
||||
@NotNull
|
||||
@@ -54,8 +55,6 @@ public class DeclarationResolver {
|
||||
@NotNull
|
||||
private DescriptorResolver descriptorResolver;
|
||||
@NotNull
|
||||
private ScriptHeaderResolver scriptHeaderResolver;
|
||||
@NotNull
|
||||
private BindingTrace trace;
|
||||
|
||||
|
||||
@@ -79,13 +78,6 @@ public class DeclarationResolver {
|
||||
this.trace = trace;
|
||||
}
|
||||
|
||||
// SCRIPT: inject script header resolver
|
||||
@Inject
|
||||
public void setScriptHeaderResolver(@NotNull ScriptHeaderResolver scriptHeaderResolver) {
|
||||
this.scriptHeaderResolver = scriptHeaderResolver;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void process(@NotNull TopDownAnalysisContext c) {
|
||||
resolveAnnotationConstructors(c);
|
||||
@@ -94,7 +86,7 @@ public class DeclarationResolver {
|
||||
resolveFunctionAndPropertyHeaders(c);
|
||||
|
||||
// SCRIPT: Resolve script declarations
|
||||
scriptHeaderResolver.resolveScriptDeclarations(c);
|
||||
resolveScriptDeclarations(c);
|
||||
|
||||
createFunctionsForDataClasses(c);
|
||||
importsResolver.processMembersImports(c);
|
||||
|
||||
@@ -141,6 +141,7 @@ public final class ByteProgression : kotlin.Progression<kotlin.Byte> {
|
||||
public open override /*1*/ fun <get-increment>(): kotlin.Int
|
||||
public open override /*1*/ val start: kotlin.Byte
|
||||
public open override /*1*/ fun <get-start>(): kotlin.Byte
|
||||
public final fun isEmpty(): kotlin.Boolean
|
||||
public open override /*1*/ fun iterator(): kotlin.ByteIterator
|
||||
}
|
||||
|
||||
@@ -170,6 +171,7 @@ public final class ByteRange : kotlin.Range<kotlin.Byte>, kotlin.Progression<kot
|
||||
public open override /*2*/ val start: kotlin.Byte
|
||||
public open override /*2*/ fun <get-start>(): kotlin.Byte
|
||||
public open override /*1*/ fun contains(/*0*/ item: kotlin.Byte): kotlin.Boolean
|
||||
public open override /*1*/ fun isEmpty(): kotlin.Boolean
|
||||
public open override /*1*/ fun iterator(): kotlin.ByteIterator
|
||||
|
||||
public class object <class-object-for-ByteRange> {
|
||||
@@ -259,6 +261,7 @@ public final class CharProgression : kotlin.Progression<kotlin.Char> {
|
||||
public open override /*1*/ fun <get-increment>(): kotlin.Int
|
||||
public open override /*1*/ val start: kotlin.Char
|
||||
public open override /*1*/ fun <get-start>(): kotlin.Char
|
||||
public final fun isEmpty(): kotlin.Boolean
|
||||
public open override /*1*/ fun iterator(): kotlin.CharIterator
|
||||
}
|
||||
|
||||
@@ -288,6 +291,7 @@ public final class CharRange : kotlin.Range<kotlin.Char>, kotlin.Progression<kot
|
||||
public open override /*2*/ val start: kotlin.Char
|
||||
public open override /*2*/ fun <get-start>(): kotlin.Char
|
||||
public open override /*1*/ fun contains(/*0*/ item: kotlin.Char): kotlin.Boolean
|
||||
public open override /*1*/ fun isEmpty(): kotlin.Boolean
|
||||
public open override /*1*/ fun iterator(): kotlin.CharIterator
|
||||
|
||||
public class object <class-object-for-CharRange> {
|
||||
@@ -404,6 +408,7 @@ public final class DoubleProgression : kotlin.Progression<kotlin.Double> {
|
||||
public open override /*1*/ fun <get-increment>(): kotlin.Double
|
||||
public open override /*1*/ val start: kotlin.Double
|
||||
public open override /*1*/ fun <get-start>(): kotlin.Double
|
||||
public final fun isEmpty(): kotlin.Boolean
|
||||
public open override /*1*/ fun iterator(): kotlin.DoubleIterator
|
||||
}
|
||||
|
||||
@@ -430,6 +435,7 @@ public final class DoubleRange : kotlin.Range<kotlin.Double>, kotlin.Progression
|
||||
public open override /*2*/ val start: kotlin.Double
|
||||
public open override /*2*/ fun <get-start>(): kotlin.Double
|
||||
public open override /*1*/ fun contains(/*0*/ item: kotlin.Double): kotlin.Boolean
|
||||
public open override /*1*/ fun isEmpty(): kotlin.Boolean
|
||||
public open override /*1*/ fun iterator(): kotlin.DoubleIterator
|
||||
|
||||
public class object <class-object-for-DoubleRange> {
|
||||
@@ -627,6 +633,7 @@ public final class FloatProgression : kotlin.Progression<kotlin.Float> {
|
||||
public open override /*1*/ fun <get-increment>(): kotlin.Float
|
||||
public open override /*1*/ val start: kotlin.Float
|
||||
public open override /*1*/ fun <get-start>(): kotlin.Float
|
||||
public final fun isEmpty(): kotlin.Boolean
|
||||
public open override /*1*/ fun iterator(): kotlin.FloatIterator
|
||||
}
|
||||
|
||||
@@ -653,6 +660,7 @@ public final class FloatRange : kotlin.Range<kotlin.Float>, kotlin.Progression<k
|
||||
public open override /*2*/ val start: kotlin.Float
|
||||
public open override /*2*/ fun <get-start>(): kotlin.Float
|
||||
public open override /*1*/ fun contains(/*0*/ item: kotlin.Float): kotlin.Boolean
|
||||
public open override /*1*/ fun isEmpty(): kotlin.Boolean
|
||||
public open override /*1*/ fun iterator(): kotlin.FloatIterator
|
||||
|
||||
public class object <class-object-for-FloatRange> {
|
||||
@@ -887,6 +895,7 @@ public final class IntProgression : kotlin.Progression<kotlin.Int> {
|
||||
public open override /*1*/ fun <get-increment>(): kotlin.Int
|
||||
public open override /*1*/ val start: kotlin.Int
|
||||
public open override /*1*/ fun <get-start>(): kotlin.Int
|
||||
public final fun isEmpty(): kotlin.Boolean
|
||||
public open override /*1*/ fun iterator(): kotlin.IntIterator
|
||||
}
|
||||
|
||||
@@ -916,6 +925,7 @@ public final class IntRange : kotlin.Range<kotlin.Int>, kotlin.Progression<kotli
|
||||
public open override /*2*/ val start: kotlin.Int
|
||||
public open override /*2*/ fun <get-start>(): kotlin.Int
|
||||
public open override /*1*/ fun contains(/*0*/ item: kotlin.Int): kotlin.Boolean
|
||||
public open override /*1*/ fun isEmpty(): kotlin.Boolean
|
||||
public open override /*1*/ fun iterator(): kotlin.IntIterator
|
||||
|
||||
public class object <class-object-for-IntRange> {
|
||||
@@ -1054,6 +1064,7 @@ public final class LongProgression : kotlin.Progression<kotlin.Long> {
|
||||
public open override /*1*/ fun <get-increment>(): kotlin.Long
|
||||
public open override /*1*/ val start: kotlin.Long
|
||||
public open override /*1*/ fun <get-start>(): kotlin.Long
|
||||
public final fun isEmpty(): kotlin.Boolean
|
||||
public open override /*1*/ fun iterator(): kotlin.LongIterator
|
||||
}
|
||||
|
||||
@@ -1083,6 +1094,7 @@ public final class LongRange : kotlin.Range<kotlin.Long>, kotlin.Progression<kot
|
||||
public open override /*2*/ val start: kotlin.Long
|
||||
public open override /*2*/ fun <get-start>(): kotlin.Long
|
||||
public open override /*1*/ fun contains(/*0*/ item: kotlin.Long): kotlin.Boolean
|
||||
public open override /*1*/ fun isEmpty(): kotlin.Boolean
|
||||
public open override /*1*/ fun iterator(): kotlin.LongIterator
|
||||
|
||||
public class object <class-object-for-LongRange> {
|
||||
@@ -1245,6 +1257,7 @@ public trait Range</*0*/ T : kotlin.Comparable<T>> {
|
||||
public abstract val start: T
|
||||
public abstract fun <get-start>(): T
|
||||
public abstract fun contains(/*0*/ item: T): kotlin.Boolean
|
||||
public open fun isEmpty(): kotlin.Boolean
|
||||
}
|
||||
|
||||
public trait Set</*0*/ out E> : kotlin.Collection<E> {
|
||||
@@ -1345,6 +1358,7 @@ public final class ShortProgression : kotlin.Progression<kotlin.Short> {
|
||||
public open override /*1*/ fun <get-increment>(): kotlin.Int
|
||||
public open override /*1*/ val start: kotlin.Short
|
||||
public open override /*1*/ fun <get-start>(): kotlin.Short
|
||||
public final fun isEmpty(): kotlin.Boolean
|
||||
public open override /*1*/ fun iterator(): kotlin.ShortIterator
|
||||
}
|
||||
|
||||
@@ -1374,6 +1388,7 @@ public final class ShortRange : kotlin.Range<kotlin.Short>, kotlin.Progression<k
|
||||
public open override /*2*/ val start: kotlin.Short
|
||||
public open override /*2*/ fun <get-start>(): kotlin.Short
|
||||
public open override /*1*/ fun contains(/*0*/ item: kotlin.Short): kotlin.Boolean
|
||||
public open override /*1*/ fun isEmpty(): kotlin.Boolean
|
||||
public open override /*1*/ fun iterator(): kotlin.ShortIterator
|
||||
|
||||
public class object <class-object-for-ShortRange> {
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
import java.lang.reflect.Modifier
|
||||
|
||||
class C {
|
||||
volatile var vol = 1
|
||||
transient val tra = 1
|
||||
|
||||
strictfp fun str() {}
|
||||
synchronized fun sync() {}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val c = javaClass<C>()
|
||||
|
||||
if (c.getDeclaredField("vol").getModifiers() and Modifier.VOLATILE == 0) return "Fail: volatile"
|
||||
if (c.getDeclaredField("tra").getModifiers() and Modifier.TRANSIENT == 0) return "Fail: transient"
|
||||
|
||||
if (c.getDeclaredMethod("str").getModifiers() and Modifier.STRICT == 0) return "Fail: strict"
|
||||
if (c.getDeclaredMethod("sync").getModifiers() and Modifier.SYNCHRONIZED == 0) return "Fail: synchronized"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
volatile var vol = 1
|
||||
transient val tra = 1
|
||||
|
||||
strictfp fun str() {}
|
||||
synchronized fun sync() {}
|
||||
|
||||
// 0 kotlin/jvm/volatile
|
||||
// 0 kotlin/jvm/transient
|
||||
// 0 kotlin/jvm/strictfp
|
||||
// 0 kotlin/jvm/synchronized
|
||||
@@ -1,3 +0,0 @@
|
||||
volatile val foo: Int = 1
|
||||
|
||||
// 0 kotlin/volatile
|
||||
@@ -0,0 +1,30 @@
|
||||
package test;
|
||||
|
||||
public class PrivateMembers {
|
||||
private PrivateMembers() {
|
||||
}
|
||||
|
||||
private int field = 1;
|
||||
private static int staticField = 2;
|
||||
|
||||
private void method() {
|
||||
}
|
||||
|
||||
private void samAdapter(SamInterface r) {
|
||||
}
|
||||
|
||||
private static void staticMethod() {
|
||||
}
|
||||
|
||||
private class Inner {
|
||||
}
|
||||
|
||||
private interface SamInterface {
|
||||
void foo();
|
||||
}
|
||||
|
||||
private static class Nested {
|
||||
private static void staticMethodInNested() {
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package test
|
||||
|
||||
public open class PrivateMembers : java.lang.Object {
|
||||
private constructor PrivateMembers()
|
||||
private final var field: kotlin.Int
|
||||
private open fun method(): kotlin.Unit
|
||||
private final /*synthesized*/ fun samAdapter(/*0*/ p0: (() -> kotlin.Unit)?): kotlin.Unit
|
||||
private open fun samAdapter(/*0*/ p0: test.PrivateMembers.SamInterface?): kotlin.Unit
|
||||
|
||||
private open inner class Inner : java.lang.Object {
|
||||
private constructor Inner()
|
||||
}
|
||||
|
||||
private open class Nested : java.lang.Object {
|
||||
private constructor Nested()
|
||||
}
|
||||
|
||||
private trait SamInterface : java.lang.Object {
|
||||
public abstract fun foo(): kotlin.Unit
|
||||
}
|
||||
}
|
||||
|
||||
package test.PrivateMembers {
|
||||
private var staticField: kotlin.Int
|
||||
private /*synthesized*/ fun SamInterface(/*0*/ function: () -> kotlin.Unit): test.PrivateMembers.SamInterface
|
||||
private open fun staticMethod(): kotlin.Unit
|
||||
|
||||
package test.PrivateMembers.Nested {
|
||||
private open fun staticMethodInNested(): kotlin.Unit
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package test;
|
||||
|
||||
public class PrivateMembersInHierarchy {
|
||||
public static class Super {
|
||||
private int field = 1;
|
||||
private int field2 = 1;
|
||||
|
||||
private void method() {
|
||||
}
|
||||
}
|
||||
|
||||
public static class Sub extends Super {
|
||||
private int field = 1;
|
||||
|
||||
private void method() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
package test
|
||||
|
||||
public open class PrivateMembersInHierarchy : java.lang.Object {
|
||||
public constructor PrivateMembersInHierarchy()
|
||||
|
||||
public open class Sub : test.PrivateMembersInHierarchy.Super {
|
||||
public constructor Sub()
|
||||
private final var field: kotlin.Int
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var field2: kotlin.Int
|
||||
private open fun method(): kotlin.Unit
|
||||
}
|
||||
|
||||
public open class Super : java.lang.Object {
|
||||
public constructor Super()
|
||||
private final var field: kotlin.Int
|
||||
private final var field2: kotlin.Int
|
||||
private open fun method(): kotlin.Unit
|
||||
}
|
||||
}
|
||||
+8
@@ -2,9 +2,12 @@ package test
|
||||
|
||||
public abstract class ClassDoesNotOverrideMethod : java.util.Date {
|
||||
public constructor ClassDoesNotOverrideMethod()
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var cdate: sun.util.calendar.BaseCalendar.Date?
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var fastTime: kotlin.Long
|
||||
public open override /*1*/ /*fake_override*/ fun after(/*0*/ p0: java.util.Date): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun before(/*0*/ p0: java.util.Date): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: java.util.Date): kotlin.Int
|
||||
invisible_fake final override /*1*/ /*fake_override*/ fun getCalendarDate(): sun.util.calendar.BaseCalendar.Date?
|
||||
kotlin.deprecated(value = "Deprecated in Java": kotlin.String) public open override /*1*/ /*fake_override*/ fun getDate(): kotlin.Int
|
||||
kotlin.deprecated(value = "Deprecated in Java": kotlin.String) public open override /*1*/ /*fake_override*/ fun getDay(): kotlin.Int
|
||||
kotlin.deprecated(value = "Deprecated in Java": kotlin.String) public open override /*1*/ /*fake_override*/ fun getHours(): kotlin.Int
|
||||
@@ -12,8 +15,12 @@ public abstract class ClassDoesNotOverrideMethod : java.util.Date {
|
||||
kotlin.deprecated(value = "Deprecated in Java": kotlin.String) public open override /*1*/ /*fake_override*/ fun getMonth(): kotlin.Int
|
||||
kotlin.deprecated(value = "Deprecated in Java": kotlin.String) public open override /*1*/ /*fake_override*/ fun getSeconds(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun getTime(): kotlin.Long
|
||||
invisible_fake final override /*1*/ /*fake_override*/ fun getTimeImpl(): kotlin.Long
|
||||
kotlin.deprecated(value = "Deprecated in Java": kotlin.String) public open override /*1*/ /*fake_override*/ fun getTimezoneOffset(): kotlin.Int
|
||||
kotlin.deprecated(value = "Deprecated in Java": kotlin.String) public open override /*1*/ /*fake_override*/ fun getYear(): kotlin.Int
|
||||
invisible_fake final override /*1*/ /*fake_override*/ fun normalize(): sun.util.calendar.BaseCalendar.Date?
|
||||
invisible_fake final override /*1*/ /*fake_override*/ fun normalize(/*0*/ p0: sun.util.calendar.BaseCalendar.Date?): sun.util.calendar.BaseCalendar.Date?
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun readObject(/*0*/ p0: java.io.ObjectInputStream?): kotlin.Unit
|
||||
kotlin.deprecated(value = "Deprecated in Java": kotlin.String) public open override /*1*/ /*fake_override*/ fun setDate(/*0*/ p0: kotlin.Int): kotlin.Unit
|
||||
kotlin.deprecated(value = "Deprecated in Java": kotlin.String) public open override /*1*/ /*fake_override*/ fun setHours(/*0*/ p0: kotlin.Int): kotlin.Unit
|
||||
kotlin.deprecated(value = "Deprecated in Java": kotlin.String) public open override /*1*/ /*fake_override*/ fun setMinutes(/*0*/ p0: kotlin.Int): kotlin.Unit
|
||||
@@ -23,4 +30,5 @@ public abstract class ClassDoesNotOverrideMethod : java.util.Date {
|
||||
kotlin.deprecated(value = "Deprecated in Java": kotlin.String) public open override /*1*/ /*fake_override*/ fun setYear(/*0*/ p0: kotlin.Int): kotlin.Unit
|
||||
kotlin.deprecated(value = "Deprecated in Java": kotlin.String) public open override /*1*/ /*fake_override*/ fun toGMTString(): kotlin.String
|
||||
kotlin.deprecated(value = "Deprecated in Java": kotlin.String) public open override /*1*/ /*fake_override*/ fun toLocaleString(): kotlin.String
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun writeObject(/*0*/ p0: java.io.ObjectOutputStream?): kotlin.Unit
|
||||
}
|
||||
|
||||
+2
@@ -17,6 +17,8 @@ public open class ModalityOfFakeOverrides : java.util.AbstractList<kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun lastIndexOf(/*0*/ o: kotlin.Any?): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun listIterator(): kotlin.MutableListIterator<kotlin.String>
|
||||
public open override /*1*/ /*fake_override*/ fun listIterator(/*0*/ index: kotlin.Int): kotlin.MutableListIterator<kotlin.String>
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun outOfBoundsMsg(/*0*/ p0: kotlin.Int): kotlin.String?
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun rangeCheckForAdd(/*0*/ p0: kotlin.Int): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun remove(/*0*/ o: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun remove(/*0*/ index: kotlin.Int): kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun removeAll(/*0*/ c: kotlin.Collection<kotlin.Any?>): kotlin.Boolean
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
//ALLOW_AST_ACCESS
|
||||
|
||||
package test
|
||||
|
||||
public class PrivateClassMembers {
|
||||
private val v = 0
|
||||
|
||||
private var r = 0
|
||||
private set
|
||||
|
||||
private fun f() = 0
|
||||
|
||||
internal val internal = 0
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package test
|
||||
|
||||
public final class PrivateClassMembers {
|
||||
/*primary*/ public constructor PrivateClassMembers()
|
||||
internal final val internal: kotlin.Int = 0
|
||||
internal final fun <get-internal>(): kotlin.Int
|
||||
private final var r: kotlin.Int
|
||||
private final fun <get-r>(): kotlin.Int
|
||||
private final fun <set-r>(/*0*/ <set-?>: kotlin.Int): kotlin.Unit
|
||||
private final val v: kotlin.Int = 0
|
||||
private final fun <get-v>(): kotlin.Int
|
||||
private final fun f(): kotlin.Int
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
package test
|
||||
|
||||
public class InheritJavaField(): Super() {
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package test
|
||||
|
||||
public final class InheritJavaField : test.Super {
|
||||
public constructor InheritJavaField()
|
||||
public final override /*1*/ /*fake_override*/ var field: kotlin.Int
|
||||
invisible_fake final override /*1*/ /*fake_override*/ var privateField: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun method(): kotlin.Int
|
||||
}
|
||||
|
||||
public open class Super : java.lang.Object {
|
||||
public constructor Super()
|
||||
public final var field: kotlin.Int
|
||||
private final var privateField: kotlin.Int
|
||||
public open fun method(): kotlin.Int
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package test;
|
||||
|
||||
public class Super {
|
||||
public int field = 55;
|
||||
private int privateField = 54;
|
||||
public int method() { return 1; }
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
fun foo() {
|
||||
"\
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
JetFile: BackslashInString.kt
|
||||
PACKAGE_DIRECTIVE
|
||||
<empty list>
|
||||
FUN
|
||||
PsiElement(fun)('fun')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiElement(IDENTIFIER)('foo')
|
||||
VALUE_PARAMETER_LIST
|
||||
PsiElement(LPAR)('(')
|
||||
PsiElement(RPAR)(')')
|
||||
PsiWhiteSpace(' ')
|
||||
BLOCK
|
||||
PsiElement(LBRACE)('{')
|
||||
PsiWhiteSpace('\n ')
|
||||
STRING_TEMPLATE
|
||||
PsiElement(OPEN_QUOTE)('"')
|
||||
PsiErrorElement:Unexpected token in a string template
|
||||
PsiElement(BAD_CHARACTER)('\')
|
||||
PsiErrorElement:Expecting '"'
|
||||
<empty list>
|
||||
PsiWhiteSpace('\n')
|
||||
PsiElement(RBRACE)('}')
|
||||
@@ -122,9 +122,9 @@ public class BytecodeTextTestGenerated extends AbstractBytecodeTextTest {
|
||||
doTest("compiler/testData/codegen/bytecodeText/kt5016intOrNull.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("noVolatileAnnotation.kt")
|
||||
public void testNoVolatileAnnotation() throws Exception {
|
||||
doTest("compiler/testData/codegen/bytecodeText/noVolatileAnnotation.kt");
|
||||
@TestMetadata("noFlagAnnotations.kt")
|
||||
public void testNoFlagAnnotations() throws Exception {
|
||||
doTest("compiler/testData/codegen/bytecodeText/noFlagAnnotations.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("noWrapperForMethodReturningPrimitive.kt")
|
||||
|
||||
+5
@@ -48,6 +48,11 @@ public class BlackBoxWithStdlibCodegenTestGenerated extends AbstractBlackBoxCode
|
||||
doTestWithStdlib("compiler/testData/codegen/boxWithStdlib/annotations/defaultParameterValues.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("jvmFlags.kt")
|
||||
public void testJvmFlags() throws Exception {
|
||||
doTestWithStdlib("compiler/testData/codegen/boxWithStdlib/annotations/jvmFlags.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("kotlinPropertyFromClassObjectAsParameter.kt")
|
||||
public void testKotlinPropertyFromClassObjectAsParameter() throws Exception {
|
||||
doTestWithStdlib("compiler/testData/codegen/boxWithStdlib/annotations/kotlinPropertyFromClassObjectAsParameter.kt");
|
||||
|
||||
@@ -64,6 +64,16 @@ public class LoadJavaTestGenerated extends AbstractLoadJavaTest {
|
||||
doTestCompiledJava("compiler/testData/loadJava/compiledJava/PackageLocalVisibility.java");
|
||||
}
|
||||
|
||||
@TestMetadata("PrivateMembers.java")
|
||||
public void testPrivateMembers() throws Exception {
|
||||
doTestCompiledJava("compiler/testData/loadJava/compiledJava/PrivateMembers.java");
|
||||
}
|
||||
|
||||
@TestMetadata("PrivateMembersInHierarchy.java")
|
||||
public void testPrivateMembersInHierarchy() throws Exception {
|
||||
doTestCompiledJava("compiler/testData/loadJava/compiledJava/PrivateMembersInHierarchy.java");
|
||||
}
|
||||
|
||||
@TestMetadata("RawTypeWithUpperBound.java")
|
||||
public void testRawTypeWithUpperBound() throws Exception {
|
||||
doTestCompiledJava("compiler/testData/loadJava/compiledJava/RawTypeWithUpperBound.java");
|
||||
@@ -2978,6 +2988,11 @@ public class LoadJavaTestGenerated extends AbstractLoadJavaTest {
|
||||
doTestCompiledKotlin("compiler/testData/loadJava/compiledKotlin/visibility/PrivateClass.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("PrivateClassMembers.kt")
|
||||
public void testPrivateClassMembers() throws Exception {
|
||||
doTestCompiledKotlin("compiler/testData/loadJava/compiledKotlin/visibility/PrivateClassMembers.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("PrivateTopLevelFun.kt")
|
||||
public void testPrivateTopLevelFun() throws Exception {
|
||||
doTestCompiledKotlin("compiler/testData/loadJava/compiledKotlin/visibility/PrivateTopLevelFun.kt");
|
||||
@@ -3167,6 +3182,11 @@ public class LoadJavaTestGenerated extends AbstractLoadJavaTest {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/loadJava/kotlinAgainstCompiledJavaWithKotlin"), Pattern.compile("^(.+)\\.kt$"), false);
|
||||
}
|
||||
|
||||
@TestMetadata("InheritJavaField.kt")
|
||||
public void testInheritJavaField() throws Exception {
|
||||
doTestKotlinAgainstCompiledJavaWithKotlin("compiler/testData/loadJava/kotlinAgainstCompiledJavaWithKotlin/InheritJavaField.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("InheritParameterName.kt")
|
||||
public void testInheritParameterName() throws Exception {
|
||||
doTestKotlinAgainstCompiledJavaWithKotlin("compiler/testData/loadJava/kotlinAgainstCompiledJavaWithKotlin/InheritParameterName.kt");
|
||||
|
||||
+5
@@ -1456,6 +1456,11 @@ public class LazyResolveRecursiveComparingTestGenerated extends AbstractLazyReso
|
||||
doTestCheckingPrimaryConstructorsAndAccessors("compiler/testData/loadJava/compiledKotlin/visibility/PrivateClass.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("PrivateClassMembers.kt")
|
||||
public void testPrivateClassMembers() throws Exception {
|
||||
doTestCheckingPrimaryConstructorsAndAccessors("compiler/testData/loadJava/compiledKotlin/visibility/PrivateClassMembers.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("PrivateTopLevelFun.kt")
|
||||
public void testPrivateTopLevelFun() throws Exception {
|
||||
doTestCheckingPrimaryConstructorsAndAccessors("compiler/testData/loadJava/compiledKotlin/visibility/PrivateTopLevelFun.kt");
|
||||
|
||||
@@ -84,6 +84,11 @@ public class JetParsingTestGenerated extends AbstractJetParsingTest {
|
||||
doParsingTest("compiler/testData/psi/BabySteps_ERR.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("BackslashInString.kt")
|
||||
public void testBackslashInString() throws Exception {
|
||||
doParsingTest("compiler/testData/psi/BackslashInString.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("BlockCommentAtBeginningOfFile1.kt")
|
||||
public void testBlockCommentAtBeginningOfFile1() throws Exception {
|
||||
doParsingTest("compiler/testData/psi/BlockCommentAtBeginningOfFile1.kt");
|
||||
|
||||
Reference in New Issue
Block a user