Merge remote-tracking branch 'origin/master' into incremental

This commit is contained in:
Evgeny Gerashchenko
2014-06-19 11:43:11 +04:00
89 changed files with 1305 additions and 808 deletions
@@ -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) {
@@ -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();
@@ -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();
@@ -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;
}
}
@@ -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()
)
);
@@ -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));
}
}
@@ -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
@@ -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);
+15
View File
@@ -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
}
}
@@ -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
}
@@ -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
}
@@ -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")
@@ -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");
@@ -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");