else on the next line
as requested by http://confluence.jetbrains.net/display/JET/Code+Conventions+for+Java (sed is your friend)
This commit is contained in:
@@ -64,7 +64,8 @@ public class CompilationException extends RuntimeException {
|
|||||||
Throwable cause = getCause();
|
Throwable cause = getCause();
|
||||||
if (cause != null && cause.getStackTrace().length > 0) {
|
if (cause != null && cause.getStackTrace().length > 0) {
|
||||||
return cause.getStackTrace()[0].getFileName() + ":" + cause.getStackTrace()[0].getLineNumber();
|
return cause.getStackTrace()[0].getFileName() + ":" + cause.getStackTrace()[0].getLineNumber();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return "far away in cyberspace";
|
return "far away in cyberspace";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2247,7 +2247,8 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> {
|
|||||||
type = typeMapper.mapType(expressionType, MapTypeMode.VALUE);
|
type = typeMapper.mapType(expressionType, MapTypeMode.VALUE);
|
||||||
if (type.getSort() == Type.ARRAY) {
|
if (type.getSort() == Type.ARRAY) {
|
||||||
generateNewArray(expression, expressionType);
|
generateNewArray(expression, expressionType);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
ClassDescriptor classDecl = (ClassDescriptor) constructorDescriptor.getContainingDeclaration();
|
ClassDescriptor classDecl = (ClassDescriptor) constructorDescriptor.getContainingDeclaration();
|
||||||
|
|
||||||
v.anew(type);
|
v.anew(type);
|
||||||
|
|||||||
@@ -128,7 +128,8 @@ public class FunctionCodegen {
|
|||||||
if (needJetAnnotations) {
|
if (needJetAnnotations) {
|
||||||
if (functionDescriptor instanceof PropertyAccessorDescriptor) {
|
if (functionDescriptor instanceof PropertyAccessorDescriptor) {
|
||||||
PropertyCodegen.generateJetPropertyAnnotation(mv, propertyTypeSignature, jvmSignature.getKotlinTypeParameter());
|
PropertyCodegen.generateJetPropertyAnnotation(mv, propertyTypeSignature, jvmSignature.getKotlinTypeParameter());
|
||||||
} else if (functionDescriptor instanceof SimpleFunctionDescriptor) {
|
}
|
||||||
|
else if (functionDescriptor instanceof SimpleFunctionDescriptor) {
|
||||||
if (propertyTypeSignature != null) {
|
if (propertyTypeSignature != null) {
|
||||||
throw new IllegalStateException();
|
throw new IllegalStateException();
|
||||||
}
|
}
|
||||||
@@ -138,7 +139,8 @@ public class FunctionCodegen {
|
|||||||
aw.writeTypeParameters(jvmSignature.getKotlinTypeParameter());
|
aw.writeTypeParameters(jvmSignature.getKotlinTypeParameter());
|
||||||
aw.writeReturnType(jvmSignature.getKotlinReturnType());
|
aw.writeReturnType(jvmSignature.getKotlinReturnType());
|
||||||
aw.visitEnd();
|
aw.visitEnd();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
throw new IllegalStateException();
|
throw new IllegalStateException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -134,7 +134,8 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
|||||||
int innerClassAccess = ACC_PUBLIC;
|
int innerClassAccess = ACC_PUBLIC;
|
||||||
if (innerClass.getModality() == Modality.FINAL) {
|
if (innerClass.getModality() == Modality.FINAL) {
|
||||||
innerClassAccess |= ACC_FINAL;
|
innerClassAccess |= ACC_FINAL;
|
||||||
} else if (innerClass.getModality() == Modality.ABSTRACT) {
|
}
|
||||||
|
else if (innerClass.getModality() == Modality.ABSTRACT) {
|
||||||
innerClassAccess |= ACC_ABSTRACT;
|
innerClassAccess |= ACC_ABSTRACT;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -193,7 +194,8 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
|||||||
if (superClassType == null) {
|
if (superClassType == null) {
|
||||||
signatureVisitor.writeClassBegin(superClass, false, false);
|
signatureVisitor.writeClassBegin(superClass, false, false);
|
||||||
signatureVisitor.writeClassEnd();
|
signatureVisitor.writeClassEnd();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
typeMapper.mapType(superClassType, signatureVisitor, MapTypeMode.TYPE_PARAMETER);
|
typeMapper.mapType(superClassType, signatureVisitor, MapTypeMode.TYPE_PARAMETER);
|
||||||
}
|
}
|
||||||
signatureVisitor.writeSuperclassEnd();
|
signatureVisitor.writeSuperclassEnd();
|
||||||
@@ -706,7 +708,8 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
|||||||
CallableMemberDescriptor callableDescriptor = needDelegates.first;
|
CallableMemberDescriptor callableDescriptor = needDelegates.first;
|
||||||
if (needDelegates.second instanceof SimpleFunctionDescriptor) {
|
if (needDelegates.second instanceof SimpleFunctionDescriptor) {
|
||||||
generateDelegationToTraitImpl(codegen, (FunctionDescriptor) needDelegates.second);
|
generateDelegationToTraitImpl(codegen, (FunctionDescriptor) needDelegates.second);
|
||||||
} else if (needDelegates.second instanceof PropertyDescriptor) {
|
}
|
||||||
|
else if (needDelegates.second instanceof PropertyDescriptor) {
|
||||||
PropertyDescriptor property = (PropertyDescriptor) needDelegates.second;
|
PropertyDescriptor property = (PropertyDescriptor) needDelegates.second;
|
||||||
for (PropertyAccessorDescriptor accessor : property.getAccessors()) {
|
for (PropertyAccessorDescriptor accessor : property.getAccessors()) {
|
||||||
generateDelegationToTraitImpl(codegen, accessor);
|
generateDelegationToTraitImpl(codegen, accessor);
|
||||||
|
|||||||
@@ -192,7 +192,8 @@ public class JetTypeMapper {
|
|||||||
"conflicting namespace " + fqName + ": it is both java statics and from src");
|
"conflicting namespace " + fqName + ": it is both java statics and from src");
|
||||||
}
|
}
|
||||||
classStatics = javaNamespaceKind == JavaNamespaceKind.CLASS_STATICS;
|
classStatics = javaNamespaceKind == JavaNamespaceKind.CLASS_STATICS;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
classStatics = false;
|
classStatics = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -356,7 +357,8 @@ public class JetTypeMapper {
|
|||||||
Type r;
|
Type r;
|
||||||
if (!isGenericsArray(jetType)) {
|
if (!isGenericsArray(jetType)) {
|
||||||
r = Type.getType("[" + boxType(mapType(memberType, kind)).getDescriptor());
|
r = Type.getType("[" + boxType(mapType(memberType, kind)).getDescriptor());
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
r = ARRAY_GENERIC_TYPE;
|
r = ARRAY_GENERIC_TYPE;
|
||||||
}
|
}
|
||||||
checkValidType(r);
|
checkValidType(r);
|
||||||
@@ -383,7 +385,8 @@ public class JetTypeMapper {
|
|||||||
|
|
||||||
asmType = JL_COMPARABLE_TYPE;
|
asmType = JL_COMPARABLE_TYPE;
|
||||||
forceReal = false;
|
forceReal = false;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
JvmClassName name = getClassFQName((ClassDescriptor) descriptor);
|
JvmClassName name = getClassFQName((ClassDescriptor) descriptor);
|
||||||
asmType = Type.getObjectType(name.getInternalName() + (kind == MapTypeMode.TRAIT_IMPL ? JvmAbi.TRAIT_IMPL_SUFFIX : ""));
|
asmType = Type.getObjectType(name.getInternalName() + (kind == MapTypeMode.TRAIT_IMPL ? JvmAbi.TRAIT_IMPL_SUFFIX : ""));
|
||||||
forceReal = isForceReal(name);
|
forceReal = isForceReal(name);
|
||||||
@@ -426,7 +429,8 @@ public class JetTypeMapper {
|
|||||||
}
|
}
|
||||||
checkValidType(boxed);
|
checkValidType(boxed);
|
||||||
return boxed;
|
return boxed;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
if (signatureVisitor != null) {
|
if (signatureVisitor != null) {
|
||||||
visitAsmType(signatureVisitor, asmType, jetType.isNullable());
|
visitAsmType(signatureVisitor, asmType, jetType.isNullable());
|
||||||
}
|
}
|
||||||
@@ -455,7 +459,8 @@ public class JetTypeMapper {
|
|||||||
JvmPrimitiveType jvmPrimitiveType = JvmPrimitiveType.getByWrapperAsmType(type);
|
JvmPrimitiveType jvmPrimitiveType = JvmPrimitiveType.getByWrapperAsmType(type);
|
||||||
if (jvmPrimitiveType != null) {
|
if (jvmPrimitiveType != null) {
|
||||||
return jvmPrimitiveType.getAsmType();
|
return jvmPrimitiveType.getAsmType();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
throw new UnsupportedOperationException("Unboxing: " + type);
|
throw new UnsupportedOperationException("Unboxing: " + type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -464,7 +469,8 @@ public class JetTypeMapper {
|
|||||||
JvmPrimitiveType jvmPrimitiveType = JvmPrimitiveType.getByAsmType(asmType);
|
JvmPrimitiveType jvmPrimitiveType = JvmPrimitiveType.getByAsmType(asmType);
|
||||||
if (jvmPrimitiveType != null) {
|
if (jvmPrimitiveType != null) {
|
||||||
return jvmPrimitiveType.getWrapper().getAsmType();
|
return jvmPrimitiveType.getWrapper().getAsmType();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return asmType;
|
return asmType;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -508,7 +514,8 @@ public class JetTypeMapper {
|
|||||||
ClassDescriptor receiver;
|
ClassDescriptor receiver;
|
||||||
if (currentIsInterface && !originalIsInterface) {
|
if (currentIsInterface && !originalIsInterface) {
|
||||||
receiver = declarationOwner;
|
receiver = declarationOwner;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
receiver = currentOwner;
|
receiver = currentOwner;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -548,7 +555,8 @@ public class JetTypeMapper {
|
|||||||
//if (function.getKind() == CallableMemberDescriptor.Kind.DECLARATION) {
|
//if (function.getKind() == CallableMemberDescriptor.Kind.DECLARATION) {
|
||||||
if (function.getOverriddenDescriptors().isEmpty()) {
|
if (function.getOverriddenDescriptors().isEmpty()) {
|
||||||
return function;
|
return function;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
// TODO: prefer class to interface
|
// TODO: prefer class to interface
|
||||||
return findAnyDeclaration(function.getOverriddenDescriptors().iterator().next());
|
return findAnyDeclaration(function.getOverriddenDescriptors().iterator().next());
|
||||||
}
|
}
|
||||||
@@ -600,7 +608,8 @@ public class JetTypeMapper {
|
|||||||
|
|
||||||
if (f instanceof ConstructorDescriptor) {
|
if (f instanceof ConstructorDescriptor) {
|
||||||
signatureVisitor.writeVoidReturn();
|
signatureVisitor.writeVoidReturn();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
signatureVisitor.writeReturnType();
|
signatureVisitor.writeReturnType();
|
||||||
mapReturnType(f.getReturnType(), signatureVisitor);
|
mapReturnType(f.getReturnType(), signatureVisitor);
|
||||||
signatureVisitor.writeReturnTypeEnd();
|
signatureVisitor.writeReturnTypeEnd();
|
||||||
|
|||||||
@@ -185,7 +185,8 @@ public class PropertyCodegen {
|
|||||||
mv.visitCode();
|
mv.visitCode();
|
||||||
if (v.generateCode() == ClassBuilder.Mode.STUBS) {
|
if (v.generateCode() == ClassBuilder.Mode.STUBS) {
|
||||||
StubCodegen.generateStubThrow(mv);
|
StubCodegen.generateStubThrow(mv);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
InstructionAdapter iv = new InstructionAdapter(mv);
|
InstructionAdapter iv = new InstructionAdapter(mv);
|
||||||
if (kind != OwnerKind.NAMESPACE) {
|
if (kind != OwnerKind.NAMESPACE) {
|
||||||
iv.load(0, JetTypeMapper.TYPE_OBJECT);
|
iv.load(0, JetTypeMapper.TYPE_OBJECT);
|
||||||
@@ -268,7 +269,8 @@ public class PropertyCodegen {
|
|||||||
mv.visitCode();
|
mv.visitCode();
|
||||||
if (v.generateCode() == ClassBuilder.Mode.STUBS) {
|
if (v.generateCode() == ClassBuilder.Mode.STUBS) {
|
||||||
StubCodegen.generateStubThrow(mv);
|
StubCodegen.generateStubThrow(mv);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
InstructionAdapter iv = new InstructionAdapter(mv);
|
InstructionAdapter iv = new InstructionAdapter(mv);
|
||||||
final Type type = state.getInjector().getJetTypeMapper().mapType(propertyDescriptor.getType(), MapTypeMode.VALUE);
|
final Type type = state.getInjector().getJetTypeMapper().mapType(propertyDescriptor.getType(), MapTypeMode.VALUE);
|
||||||
int paramCode = 0;
|
int paramCode = 0;
|
||||||
|
|||||||
@@ -51,7 +51,8 @@ public abstract class StackValue {
|
|||||||
}
|
}
|
||||||
if (type == Type.VOID_TYPE) {
|
if (type == Type.VOID_TYPE) {
|
||||||
instructionAdapter.aconst(null);
|
instructionAdapter.aconst(null);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
Type boxed = JetTypeMapper.boxType(type);
|
Type boxed = JetTypeMapper.boxType(type);
|
||||||
instructionAdapter.invokestatic(boxed.getInternalName(), "valueOf", "(" + type.getDescriptor() + ")" + boxed.getDescriptor());
|
instructionAdapter.invokestatic(boxed.getInternalName(), "valueOf", "(" + type.getDescriptor() + ")" + boxed.getDescriptor());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,7 +50,8 @@ public class ArrayIterator implements IntrinsicMethod {
|
|||||||
if(containingDeclaration.equals(standardLibrary.getArray())) {
|
if(containingDeclaration.equals(standardLibrary.getArray())) {
|
||||||
v.invokestatic("jet/runtime/ArrayIterator", "iterator", "([Ljava/lang/Object;)Ljet/Iterator;");
|
v.invokestatic("jet/runtime/ArrayIterator", "iterator", "([Ljava/lang/Object;)Ljet/Iterator;");
|
||||||
return StackValue.onStack(JetTypeMapper.TYPE_ITERATOR);
|
return StackValue.onStack(JetTypeMapper.TYPE_ITERATOR);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
for (JvmPrimitiveType jvmPrimitiveType : JvmPrimitiveType.values()) {
|
for (JvmPrimitiveType jvmPrimitiveType : JvmPrimitiveType.values()) {
|
||||||
PrimitiveType primitiveType = jvmPrimitiveType.getPrimitiveType();
|
PrimitiveType primitiveType = jvmPrimitiveType.getPrimitiveType();
|
||||||
ClassDescriptor arrayClass = standardLibrary.getPrimitiveArrayClassDescriptor(primitiveType);
|
ClassDescriptor arrayClass = standardLibrary.getPrimitiveArrayClassDescriptor(primitiveType);
|
||||||
|
|||||||
@@ -100,7 +100,8 @@ public class BothSignatureWriter {
|
|||||||
|
|
||||||
if (DEBUG_SIGNATURE_WRITER) {
|
if (DEBUG_SIGNATURE_WRITER) {
|
||||||
signatureVisitor = new CheckSignatureAdapter(mode.asmType, signatureWriter);
|
signatureVisitor = new CheckSignatureAdapter(mode.asmType, signatureWriter);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
signatureVisitor = signatureWriter;
|
signatureVisitor = signatureWriter;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -192,14 +193,16 @@ public class BothSignatureWriter {
|
|||||||
if (nullable) {
|
if (nullable) {
|
||||||
signatureVisitor().visitClassType("java/lang/Object");
|
signatureVisitor().visitClassType("java/lang/Object");
|
||||||
signatureVisitor().visitEnd();
|
signatureVisitor().visitEnd();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
signatureVisitor().visitBaseType('V');
|
signatureVisitor().visitBaseType('V');
|
||||||
}
|
}
|
||||||
jetSignatureWriter.visitClassType("jet/Nothing", nullable, false);
|
jetSignatureWriter.visitClassType("jet/Nothing", nullable, false);
|
||||||
jetSignatureWriter.visitEnd();
|
jetSignatureWriter.visitEnd();
|
||||||
if (nullable) {
|
if (nullable) {
|
||||||
writeAsmType0(JetTypeMapper.TYPE_OBJECT);
|
writeAsmType0(JetTypeMapper.TYPE_OBJECT);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
writeAsmType0(Type.VOID_TYPE);
|
writeAsmType0(Type.VOID_TYPE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -513,7 +516,8 @@ public class BothSignatureWriter {
|
|||||||
makeKotlinParameterTypes(),
|
makeKotlinParameterTypes(),
|
||||||
makeKotlinReturnTypeSignature()
|
makeKotlinReturnTypeSignature()
|
||||||
);
|
);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return new JvmMethodSignature(makeAsmMethod(name), makeKotlinParameterTypes());
|
return new JvmMethodSignature(makeAsmMethod(name), makeKotlinParameterTypes());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -114,7 +114,8 @@ public class JvmMethodSignature {
|
|||||||
checkGenericsAvailable();
|
checkGenericsAvailable();
|
||||||
if (kotlinParameterTypes == null) {
|
if (kotlinParameterTypes == null) {
|
||||||
return "";
|
return "";
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return kotlinParameterTypes.get(i).getKotlinSignature();
|
return kotlinParameterTypes.get(i).getKotlinSignature();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,7 +62,8 @@ public final class TipsManager {
|
|||||||
resolutionScope, new ExpressionReceiver(receiverExpression, expressionType));
|
resolutionScope, new ExpressionReceiver(receiverExpression, expressionType));
|
||||||
}
|
}
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return getVariantsNoReceiver(expression, context);
|
return getVariantsNoReceiver(expression, context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -72,7 +73,8 @@ public final class TipsManager {
|
|||||||
if (resolutionScope != null) {
|
if (resolutionScope != null) {
|
||||||
if (expression.getParent() instanceof JetImportDirective || expression.getParent() instanceof JetNamespaceHeader) {
|
if (expression.getParent() instanceof JetImportDirective || expression.getParent() instanceof JetNamespaceHeader) {
|
||||||
return excludeNonPackageDescriptors(resolutionScope.getAllDescriptors());
|
return excludeNonPackageDescriptors(resolutionScope.getAllDescriptors());
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
HashSet<DeclarationDescriptor> descriptorsSet = Sets.newHashSet();
|
HashSet<DeclarationDescriptor> descriptorsSet = Sets.newHashSet();
|
||||||
|
|
||||||
ArrayList<ReceiverDescriptor> result = new ArrayList<ReceiverDescriptor>();
|
ArrayList<ReceiverDescriptor> result = new ArrayList<ReceiverDescriptor>();
|
||||||
|
|||||||
@@ -112,7 +112,8 @@ public class KotlinCompiler {
|
|||||||
if (mode.includeJdkHeaders()) {
|
if (mode.includeJdkHeaders()) {
|
||||||
if (arguments.jdkHeaders != null) {
|
if (arguments.jdkHeaders != null) {
|
||||||
jdkHeadersJar = new File(arguments.jdkHeaders);
|
jdkHeadersJar = new File(arguments.jdkHeaders);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
jdkHeadersJar = PathUtil.getAltHeadersPath();
|
jdkHeadersJar = PathUtil.getAltHeadersPath();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -124,7 +125,8 @@ public class KotlinCompiler {
|
|||||||
if (mode.includeKotlinRuntime()) {
|
if (mode.includeKotlinRuntime()) {
|
||||||
if (arguments.stdlib != null) {
|
if (arguments.stdlib != null) {
|
||||||
runtimeJar = new File(arguments.stdlib);
|
runtimeJar = new File(arguments.stdlib);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
runtimeJar = PathUtil.getDefaultRuntimePath();
|
runtimeJar = PathUtil.getDefaultRuntimePath();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -145,7 +147,8 @@ public class KotlinCompiler {
|
|||||||
// TODO ideally we'd unify to just having a single field that supports multiple files/dirs
|
// TODO ideally we'd unify to just having a single field that supports multiple files/dirs
|
||||||
if (arguments.getSourceDirs() != null) {
|
if (arguments.getSourceDirs() != null) {
|
||||||
noErrors = environment.compileBunchOfSourceDirectories(arguments.getSourceDirs(), arguments.jar, arguments.outputDir, arguments.includeRuntime);
|
noErrors = environment.compileBunchOfSourceDirectories(arguments.getSourceDirs(), arguments.jar, arguments.outputDir, arguments.includeRuntime);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
noErrors = environment.compileBunchOfSources(arguments.src, arguments.jar, arguments.outputDir, arguments.includeRuntime);
|
noErrors = environment.compileBunchOfSources(arguments.src, arguments.jar, arguments.outputDir, arguments.includeRuntime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -129,13 +129,17 @@ public class CompileEnvironment {
|
|||||||
public void ensureRuntime() {
|
public void ensureRuntime() {
|
||||||
if (compilerDependencies.getCompilerSpecialMode() == CompilerSpecialMode.REGULAR) {
|
if (compilerDependencies.getCompilerSpecialMode() == CompilerSpecialMode.REGULAR) {
|
||||||
ensureRuntime(environment);
|
ensureRuntime(environment);
|
||||||
} else if (compilerDependencies.getCompilerSpecialMode() == CompilerSpecialMode.JDK_HEADERS) {
|
}
|
||||||
|
else if (compilerDependencies.getCompilerSpecialMode() == CompilerSpecialMode.JDK_HEADERS) {
|
||||||
ensureJdkRuntime(environment);
|
ensureJdkRuntime(environment);
|
||||||
} else if (compilerDependencies.getCompilerSpecialMode() == CompilerSpecialMode.STDLIB) {
|
}
|
||||||
|
else if (compilerDependencies.getCompilerSpecialMode() == CompilerSpecialMode.STDLIB) {
|
||||||
ensureJdkRuntime(environment);
|
ensureJdkRuntime(environment);
|
||||||
} else if (compilerDependencies.getCompilerSpecialMode() == CompilerSpecialMode.BUILTINS) {
|
}
|
||||||
|
else if (compilerDependencies.getCompilerSpecialMode() == CompilerSpecialMode.BUILTINS) {
|
||||||
// nop
|
// nop
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
throw new IllegalStateException("unknown mode: " + compilerDependencies.getCompilerSpecialMode());
|
throw new IllegalStateException("unknown mode: " + compilerDependencies.getCompilerSpecialMode());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -168,7 +168,8 @@ public class CompileSession {
|
|||||||
DeclarationDescriptor containingDeclaration = descriptor.getContainingDeclaration();
|
DeclarationDescriptor containingDeclaration = descriptor.getContainingDeclaration();
|
||||||
if (containingDeclaration == null || containingDeclaration instanceof ModuleDescriptor || containingDeclaration.getName().equals(JavaDescriptorResolver.JAVA_ROOT)) {
|
if (containingDeclaration == null || containingDeclaration instanceof ModuleDescriptor || containingDeclaration.getName().equals(JavaDescriptorResolver.JAVA_ROOT)) {
|
||||||
return descriptor.getName();
|
return descriptor.getName();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return fqName((ClassOrNamespaceDescriptor) containingDeclaration) + "." + descriptor.getName();
|
return fqName((ClassOrNamespaceDescriptor) containingDeclaration) + "." + descriptor.getName();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-2
@@ -73,7 +73,8 @@ public class CompilerDependencies {
|
|||||||
public List<VirtualFile> getJdkHeaderRoots() {
|
public List<VirtualFile> getJdkHeaderRoots() {
|
||||||
if (compilerSpecialMode.includeJdkHeaders()) {
|
if (compilerSpecialMode.includeJdkHeaders()) {
|
||||||
return Collections.singletonList(PathUtil.jarFileToVirtualFile(jdkHeadersJar));
|
return Collections.singletonList(PathUtil.jarFileToVirtualFile(jdkHeadersJar));
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -82,7 +83,8 @@ public class CompilerDependencies {
|
|||||||
public List<VirtualFile> getRuntimeRoots() {
|
public List<VirtualFile> getRuntimeRoots() {
|
||||||
if (compilerSpecialMode.includeKotlinRuntime()) {
|
if (compilerSpecialMode.includeKotlinRuntime()) {
|
||||||
return Collections.singletonList(PathUtil.jarFileToVirtualFile(runtimeJar));
|
return Collections.singletonList(PathUtil.jarFileToVirtualFile(runtimeJar));
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+88
-44
@@ -345,11 +345,14 @@ public class JavaDescriptorResolver {
|
|||||||
if (kotlinClassDescriptor != null) {
|
if (kotlinClassDescriptor != null) {
|
||||||
if (searchRule == DescriptorSearchRule.ERROR_IF_FOUND_IN_KOTLIN) {
|
if (searchRule == DescriptorSearchRule.ERROR_IF_FOUND_IN_KOTLIN) {
|
||||||
throw new IllegalStateException("class must not be found in kotlin: " + qualifiedName);
|
throw new IllegalStateException("class must not be found in kotlin: " + qualifiedName);
|
||||||
} else if (searchRule == DescriptorSearchRule.IGNORE_IF_FOUND_IN_KOTLIN) {
|
}
|
||||||
|
else if (searchRule == DescriptorSearchRule.IGNORE_IF_FOUND_IN_KOTLIN) {
|
||||||
return null;
|
return null;
|
||||||
} else if (searchRule == DescriptorSearchRule.INCLUDE_KOTLIN) {
|
}
|
||||||
|
else if (searchRule == DescriptorSearchRule.INCLUDE_KOTLIN) {
|
||||||
return kotlinClassDescriptor;
|
return kotlinClassDescriptor;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
throw new IllegalStateException("unknown searchRule: " + searchRule);
|
throw new IllegalStateException("unknown searchRule: " + searchRule);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -767,14 +770,16 @@ public class JavaDescriptorResolver {
|
|||||||
List<?> upperBounds = typeParameter.upperBoundsForKotlin;
|
List<?> upperBounds = typeParameter.upperBoundsForKotlin;
|
||||||
if (upperBounds.size() == 0){
|
if (upperBounds.size() == 0){
|
||||||
typeParameterDescriptor.addUpperBound(JetStandardClasses.getNullableAnyType());
|
typeParameterDescriptor.addUpperBound(JetStandardClasses.getNullableAnyType());
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
for (JetType upperBound : typeParameter.upperBoundsForKotlin) {
|
for (JetType upperBound : typeParameter.upperBoundsForKotlin) {
|
||||||
typeParameterDescriptor.addUpperBound(upperBound);
|
typeParameterDescriptor.addUpperBound(upperBound);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: lower bounds
|
// TODO: lower bounds
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
PsiClassType[] referencedTypes = typeParameter.psiTypeParameter.getExtendsList().getReferencedTypes();
|
PsiClassType[] referencedTypes = typeParameter.psiTypeParameter.getExtendsList().getReferencedTypes();
|
||||||
if (referencedTypes.length == 0){
|
if (referencedTypes.length == 0){
|
||||||
typeParameterDescriptor.addUpperBound(JetStandardClasses.getNullableAnyType());
|
typeParameterDescriptor.addUpperBound(JetStandardClasses.getNullableAnyType());
|
||||||
@@ -832,7 +837,8 @@ public class JavaDescriptorResolver {
|
|||||||
return visitSuperclass();
|
return visitSuperclass();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
TypeVariableResolver typeVariableResolverForSupertypes = TypeVariableResolvers.typeVariableResolverFromTypeParameters(typeParameters, classDescriptor, context);
|
TypeVariableResolver typeVariableResolverForSupertypes = TypeVariableResolvers.typeVariableResolverFromTypeParameters(typeParameters, classDescriptor, context);
|
||||||
transformSupertypeList(result, psiClass.getPsiClass().getExtendsListTypes(), typeVariableResolverForSupertypes, classDescriptor.getKind() == ClassKind.ANNOTATION_CLASS);
|
transformSupertypeList(result, psiClass.getPsiClass().getExtendsListTypes(), typeVariableResolverForSupertypes, classDescriptor.getKind() == ClassKind.ANNOTATION_CLASS);
|
||||||
transformSupertypeList(result, psiClass.getPsiClass().getImplementsListTypes(), typeVariableResolverForSupertypes, classDescriptor.getKind() == ClassKind.ANNOTATION_CLASS);
|
transformSupertypeList(result, psiClass.getPsiClass().getImplementsListTypes(), typeVariableResolverForSupertypes, classDescriptor.getKind() == ClassKind.ANNOTATION_CLASS);
|
||||||
@@ -873,12 +879,15 @@ public class JavaDescriptorResolver {
|
|||||||
if (kotlinNamespaceDescriptor != null) {
|
if (kotlinNamespaceDescriptor != null) {
|
||||||
if (searchRule == DescriptorSearchRule.ERROR_IF_FOUND_IN_KOTLIN) {
|
if (searchRule == DescriptorSearchRule.ERROR_IF_FOUND_IN_KOTLIN) {
|
||||||
throw new IllegalStateException("class must not be found in kotlin: " + qualifiedName);
|
throw new IllegalStateException("class must not be found in kotlin: " + qualifiedName);
|
||||||
} else if (searchRule == DescriptorSearchRule.IGNORE_IF_FOUND_IN_KOTLIN) {
|
}
|
||||||
|
else if (searchRule == DescriptorSearchRule.IGNORE_IF_FOUND_IN_KOTLIN) {
|
||||||
return null;
|
return null;
|
||||||
} else if (searchRule == DescriptorSearchRule.INCLUDE_KOTLIN) {
|
}
|
||||||
|
else if (searchRule == DescriptorSearchRule.INCLUDE_KOTLIN) {
|
||||||
// TODO: probably this is evil
|
// TODO: probably this is evil
|
||||||
return kotlinNamespaceDescriptor;
|
return kotlinNamespaceDescriptor;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
throw new IllegalStateException("unknown searchRule: " + searchRule);
|
throw new IllegalStateException("unknown searchRule: " + searchRule);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -915,7 +924,8 @@ public class JavaDescriptorResolver {
|
|||||||
private NamespaceDescriptorParent resolveParentNamespace(FqName fqName) {
|
private NamespaceDescriptorParent resolveParentNamespace(FqName fqName) {
|
||||||
if (fqName.isRoot()) {
|
if (fqName.isRoot()) {
|
||||||
return FAKE_ROOT_MODULE;
|
return FAKE_ROOT_MODULE;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return resolveNamespace(fqName.parent(), DescriptorSearchRule.INCLUDE_KOTLIN);
|
return resolveNamespace(fqName.parent(), DescriptorSearchRule.INCLUDE_KOTLIN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1042,27 +1052,32 @@ public class JavaDescriptorResolver {
|
|||||||
JetType outType;
|
JetType outType;
|
||||||
if (typeFromAnnotation.length() > 0) {
|
if (typeFromAnnotation.length() > 0) {
|
||||||
outType = semanticServices.getTypeTransformer().transformToType(typeFromAnnotation, typeVariableResolver);
|
outType = semanticServices.getTypeTransformer().transformToType(typeFromAnnotation, typeVariableResolver);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
outType = semanticServices.getTypeTransformer().transformToType(psiType, typeVariableResolver);
|
outType = semanticServices.getTypeTransformer().transformToType(psiType, typeVariableResolver);
|
||||||
}
|
}
|
||||||
|
|
||||||
JetType varargElementType;
|
JetType varargElementType;
|
||||||
if (psiType instanceof PsiEllipsisType) {
|
if (psiType instanceof PsiEllipsisType) {
|
||||||
varargElementType = JetStandardLibrary.getInstance().getArrayElementType(outType);
|
varargElementType = JetStandardLibrary.getInstance().getArrayElementType(outType);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
varargElementType = null;
|
varargElementType = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (receiver) {
|
if (receiver) {
|
||||||
return JvmMethodParameterMeaning.receiver(outType);
|
return JvmMethodParameterMeaning.receiver(outType);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
JetType transformedType;
|
JetType transformedType;
|
||||||
if (parameter.getJetValueParameter().nullable()) {
|
if (parameter.getJetValueParameter().nullable()) {
|
||||||
transformedType = TypeUtils.makeNullableAsSpecified(outType, parameter.getJetValueParameter().nullable());
|
transformedType = TypeUtils.makeNullableAsSpecified(outType, parameter.getJetValueParameter().nullable());
|
||||||
} else if (parameter.getPsiParameter().getModifierList().findAnnotation(JvmAbi.JETBRAINS_NOT_NULL_ANNOTATION.getFqName().getFqName()) != null) {
|
}
|
||||||
|
else if (parameter.getPsiParameter().getModifierList().findAnnotation(JvmAbi.JETBRAINS_NOT_NULL_ANNOTATION.getFqName().getFqName()) != null) {
|
||||||
transformedType = TypeUtils.makeNullableAsSpecified(outType, false);
|
transformedType = TypeUtils.makeNullableAsSpecified(outType, false);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
transformedType = outType;
|
transformedType = outType;
|
||||||
}
|
}
|
||||||
return JvmMethodParameterMeaning.regular(new ValueParameterDescriptorImpl(
|
return JvmMethodParameterMeaning.regular(new ValueParameterDescriptorImpl(
|
||||||
@@ -1118,9 +1133,11 @@ public class JavaDescriptorResolver {
|
|||||||
private Object key(TypeSource typeSource) {
|
private Object key(TypeSource typeSource) {
|
||||||
if (typeSource == null) {
|
if (typeSource == null) {
|
||||||
return "";
|
return "";
|
||||||
} else if (typeSource.getTypeString().length() > 0) {
|
}
|
||||||
|
else if (typeSource.getTypeString().length() > 0) {
|
||||||
return typeSource.getTypeString();
|
return typeSource.getTypeString();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return psiTypeToKey(typeSource.getPsiType());
|
return psiTypeToKey(typeSource.getPsiType());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1128,11 +1145,14 @@ public class JavaDescriptorResolver {
|
|||||||
private Object psiTypeToKey(PsiType psiType) {
|
private Object psiTypeToKey(PsiType psiType) {
|
||||||
if (psiType instanceof PsiClassType) {
|
if (psiType instanceof PsiClassType) {
|
||||||
return ((PsiClassType) psiType).getClassName();
|
return ((PsiClassType) psiType).getClassName();
|
||||||
} else if (psiType instanceof PsiPrimitiveType) {
|
}
|
||||||
|
else if (psiType instanceof PsiPrimitiveType) {
|
||||||
return psiType.getPresentableText();
|
return psiType.getPresentableText();
|
||||||
} else if (psiType instanceof PsiArrayType) {
|
}
|
||||||
|
else if (psiType instanceof PsiArrayType) {
|
||||||
return Pair.create("[", psiTypeToKey(((PsiArrayType) psiType).getComponentType()));
|
return Pair.create("[", psiTypeToKey(((PsiArrayType) psiType).getComponentType()));
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
throw new IllegalStateException("" + psiType.getClass());
|
throw new IllegalStateException("" + psiType.getClass());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1189,17 +1209,20 @@ public class JavaDescriptorResolver {
|
|||||||
throw new IllegalStateException("oops, duplicate key");
|
throw new IllegalStateException("oops, duplicate key");
|
||||||
}
|
}
|
||||||
value.getter = propertyAccessor;
|
value.getter = propertyAccessor;
|
||||||
} else if (propertyAccessor.isSetter()) {
|
}
|
||||||
|
else if (propertyAccessor.isSetter()) {
|
||||||
if (value.setter != null) {
|
if (value.setter != null) {
|
||||||
throw new IllegalStateException("oops, duplicate key");
|
throw new IllegalStateException("oops, duplicate key");
|
||||||
}
|
}
|
||||||
value.setter = propertyAccessor;
|
value.setter = propertyAccessor;
|
||||||
} else if (propertyAccessor.isField()) {
|
}
|
||||||
|
else if (propertyAccessor.isField()) {
|
||||||
if (value.field != null) {
|
if (value.field != null) {
|
||||||
throw new IllegalStateException("oops, duplicate key");
|
throw new IllegalStateException("oops, duplicate key");
|
||||||
}
|
}
|
||||||
value.field = propertyAccessor;
|
value.field = propertyAccessor;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
throw new IllegalStateException();
|
throw new IllegalStateException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1225,31 +1248,39 @@ public class JavaDescriptorResolver {
|
|||||||
boolean isFinal;
|
boolean isFinal;
|
||||||
if (!scopeData.kotlin) {
|
if (!scopeData.kotlin) {
|
||||||
isFinal = true;
|
isFinal = true;
|
||||||
} else if (members.setter == null && members.getter == null) {
|
}
|
||||||
|
else if (members.setter == null && members.getter == null) {
|
||||||
isFinal = false;
|
isFinal = false;
|
||||||
} else if (members.getter != null) {
|
}
|
||||||
|
else if (members.getter != null) {
|
||||||
isFinal = members.getter.getMember().isFinal();
|
isFinal = members.getter.getMember().isFinal();
|
||||||
} else if (members.setter != null) {
|
}
|
||||||
|
else if (members.setter != null) {
|
||||||
isFinal = members.setter.getMember().isFinal();
|
isFinal = members.setter.getMember().isFinal();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
isFinal = false;
|
isFinal = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
PropertyAccessorData anyMember;
|
PropertyAccessorData anyMember;
|
||||||
if (members.getter != null) {
|
if (members.getter != null) {
|
||||||
anyMember = members.getter;
|
anyMember = members.getter;
|
||||||
} else if (members.field != null) {
|
}
|
||||||
|
else if (members.field != null) {
|
||||||
anyMember = members.field;
|
anyMember = members.field;
|
||||||
} else if (members.setter != null) {
|
}
|
||||||
|
else if (members.setter != null) {
|
||||||
anyMember = members.setter;
|
anyMember = members.setter;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
throw new IllegalStateException();
|
throw new IllegalStateException();
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isVar;
|
boolean isVar;
|
||||||
if (members.getter == null && members.setter == null) {
|
if (members.getter == null && members.setter == null) {
|
||||||
isVar = !members.field.getMember().isFinal();
|
isVar = !members.field.getMember().isFinal();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
isVar = members.setter != null;
|
isVar = members.setter != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1305,7 +1336,8 @@ public class JavaDescriptorResolver {
|
|||||||
JetType propertyType;
|
JetType propertyType;
|
||||||
if (anyMember.getType().getTypeString().length() > 0) {
|
if (anyMember.getType().getTypeString().length() > 0) {
|
||||||
propertyType = semanticServices.getTypeTransformer().transformToType(anyMember.getType().getTypeString(), typeVariableResolverForPropertyInternals);
|
propertyType = semanticServices.getTypeTransformer().transformToType(anyMember.getType().getTypeString(), typeVariableResolverForPropertyInternals);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
propertyType = semanticServices.getTypeTransformer().transformToType(anyMember.getType().getPsiType(), typeVariableResolverForPropertyInternals);
|
propertyType = semanticServices.getTypeTransformer().transformToType(anyMember.getType().getPsiType(), typeVariableResolverForPropertyInternals);
|
||||||
if (anyMember.getType().getPsiNotNullOwner().getModifierList().findAnnotation(JvmAbi.JETBRAINS_NOT_NULL_ANNOTATION.getFqName().getFqName()) != null) {
|
if (anyMember.getType().getPsiNotNullOwner().getModifierList().findAnnotation(JvmAbi.JETBRAINS_NOT_NULL_ANNOTATION.getFqName().getFqName()) != null) {
|
||||||
propertyType = TypeUtils.makeNullableAsSpecified(propertyType, false);
|
propertyType = TypeUtils.makeNullableAsSpecified(propertyType, false);
|
||||||
@@ -1315,9 +1347,11 @@ public class JavaDescriptorResolver {
|
|||||||
JetType receiverType;
|
JetType receiverType;
|
||||||
if (anyMember.getReceiverType() == null) {
|
if (anyMember.getReceiverType() == null) {
|
||||||
receiverType = null;
|
receiverType = null;
|
||||||
} else if (anyMember.getReceiverType().getTypeString().length() > 0) {
|
}
|
||||||
|
else if (anyMember.getReceiverType().getTypeString().length() > 0) {
|
||||||
receiverType = semanticServices.getTypeTransformer().transformToType(anyMember.getReceiverType().getTypeString(), typeVariableResolverForPropertyInternals);
|
receiverType = semanticServices.getTypeTransformer().transformToType(anyMember.getReceiverType().getTypeString(), typeVariableResolverForPropertyInternals);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
receiverType = semanticServices.getTypeTransformer().transformToType(anyMember.getReceiverType().getPsiType(), typeVariableResolverForPropertyInternals);
|
receiverType = semanticServices.getTypeTransformer().transformToType(anyMember.getReceiverType().getPsiType(), typeVariableResolverForPropertyInternals);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1445,7 +1479,8 @@ public class JavaDescriptorResolver {
|
|||||||
resolveNamedGroupFunctions(scopeData.classOrNamespaceDescriptor, scopeData.psiClass, typeSubstitutor, namedMembers, methodName, scopeData);
|
resolveNamedGroupFunctions(scopeData.classOrNamespaceDescriptor, scopeData.psiClass, typeSubstitutor, namedMembers, methodName, scopeData);
|
||||||
|
|
||||||
return namedMembers.functionDescriptors;
|
return namedMembers.functionDescriptors;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return Collections.emptySet();
|
return Collections.emptySet();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1472,9 +1507,11 @@ public class JavaDescriptorResolver {
|
|||||||
if (meaning.kind == JvmMethodParameterKind.TYPE_INFO) {
|
if (meaning.kind == JvmMethodParameterKind.TYPE_INFO) {
|
||||||
// TODO
|
// TODO
|
||||||
--indexDelta;
|
--indexDelta;
|
||||||
} else if (meaning.kind == JvmMethodParameterKind.REGULAR) {
|
}
|
||||||
|
else if (meaning.kind == JvmMethodParameterKind.REGULAR) {
|
||||||
result.add(meaning.valueParameterDescriptor);
|
result.add(meaning.valueParameterDescriptor);
|
||||||
} else if (meaning.kind == JvmMethodParameterKind.RECEIVER) {
|
}
|
||||||
|
else if (meaning.kind == JvmMethodParameterKind.RECEIVER) {
|
||||||
if (receiverType != null) {
|
if (receiverType != null) {
|
||||||
throw new IllegalStateException("more then one receiver");
|
throw new IllegalStateException("more then one receiver");
|
||||||
}
|
}
|
||||||
@@ -1625,9 +1662,11 @@ public class JavaDescriptorResolver {
|
|||||||
private Collection<JetType> getSupertypes(ResolverScopeData scope) {
|
private Collection<JetType> getSupertypes(ResolverScopeData scope) {
|
||||||
if (scope instanceof ResolverBinaryClassData) {
|
if (scope instanceof ResolverBinaryClassData) {
|
||||||
return ((ResolverBinaryClassData) scope).classDescriptor.getSupertypes();
|
return ((ResolverBinaryClassData) scope).classDescriptor.getSupertypes();
|
||||||
} else if (scope instanceof ResolverNamespaceData) {
|
}
|
||||||
|
else if (scope instanceof ResolverNamespaceData) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
throw new IllegalStateException();
|
throw new IllegalStateException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1635,7 +1674,8 @@ public class JavaDescriptorResolver {
|
|||||||
private TypeSubstitutor typeSubstitutorForGenericSupertypes(ResolverScopeData scopeData) {
|
private TypeSubstitutor typeSubstitutorForGenericSupertypes(ResolverScopeData scopeData) {
|
||||||
if (scopeData instanceof ResolverBinaryClassData) {
|
if (scopeData instanceof ResolverBinaryClassData) {
|
||||||
return createSubstitutorForGenericSupertypes(((ResolverBinaryClassData) scopeData).getClassDescriptor());
|
return createSubstitutorForGenericSupertypes(((ResolverBinaryClassData) scopeData).getClassDescriptor());
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return TypeSubstitutor.EMPTY;
|
return TypeSubstitutor.EMPTY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1649,7 +1689,8 @@ public class JavaDescriptorResolver {
|
|||||||
if (method.getJetMethod().typeParameters().length() > 0) {
|
if (method.getJetMethod().typeParameters().length() > 0) {
|
||||||
typeParametersIntialization = resolveMethodTypeParametersFromJetSignature(
|
typeParametersIntialization = resolveMethodTypeParametersFromJetSignature(
|
||||||
method.getJetMethod().typeParameters(), method.getPsiMethod(), functionDescriptor);
|
method.getJetMethod().typeParameters(), method.getPsiMethod(), functionDescriptor);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
typeParametersIntialization = makeUninitializedTypeParameters(functionDescriptor, method.getPsiMethod().getTypeParameters());
|
typeParametersIntialization = makeUninitializedTypeParameters(functionDescriptor, method.getPsiMethod().getTypeParameters());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1685,14 +1726,17 @@ public class JavaDescriptorResolver {
|
|||||||
JetType transformedType;
|
JetType transformedType;
|
||||||
if (returnTypeFromAnnotation.length() > 0) {
|
if (returnTypeFromAnnotation.length() > 0) {
|
||||||
transformedType = semanticServices.getTypeTransformer().transformToType(returnTypeFromAnnotation, typeVariableResolver);
|
transformedType = semanticServices.getTypeTransformer().transformToType(returnTypeFromAnnotation, typeVariableResolver);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
transformedType = semanticServices.getTypeTransformer().transformToType(returnType, typeVariableResolver);
|
transformedType = semanticServices.getTypeTransformer().transformToType(returnType, typeVariableResolver);
|
||||||
}
|
}
|
||||||
if (method.getJetMethod().returnTypeNullable()) {
|
if (method.getJetMethod().returnTypeNullable()) {
|
||||||
return TypeUtils.makeNullableAsSpecified(transformedType, true);
|
return TypeUtils.makeNullableAsSpecified(transformedType, true);
|
||||||
} else if (method.getPsiMethod().getModifierList().findAnnotation(JvmAbi.JETBRAINS_NOT_NULL_ANNOTATION.getFqName().getFqName()) != null) {
|
}
|
||||||
|
else if (method.getPsiMethod().getModifierList().findAnnotation(JvmAbi.JETBRAINS_NOT_NULL_ANNOTATION.getFqName().getFqName()) != null) {
|
||||||
return TypeUtils.makeNullableAsSpecified(transformedType, false);
|
return TypeUtils.makeNullableAsSpecified(transformedType, false);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return transformedType;
|
return transformedType;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-4
@@ -136,7 +136,8 @@ class JavaDescriptorResolverHelper {
|
|||||||
PsiParameterWrapper receiverParameter = method.getParameter(i);
|
PsiParameterWrapper receiverParameter = method.getParameter(i);
|
||||||
receiverType = new TypeSource(receiverParameter.getJetValueParameter().type(), receiverParameter.getPsiParameter().getType(), receiverParameter.getPsiParameter());
|
receiverType = new TypeSource(receiverParameter.getJetValueParameter().type(), receiverParameter.getPsiParameter().getType(), receiverParameter.getPsiParameter());
|
||||||
++i;
|
++i;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
receiverType = null;
|
receiverType = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,7 +155,8 @@ class JavaDescriptorResolverHelper {
|
|||||||
TypeSource propertyType = new TypeSource(method.getJetMethod().propertyType(), method.getReturnType(), method.getPsiMethod());
|
TypeSource propertyType = new TypeSource(method.getJetMethod().propertyType(), method.getReturnType(), method.getPsiMethod());
|
||||||
|
|
||||||
members.addPropertyAccessor(new PropertyAccessorData(method, true, propertyType, receiverType));
|
members.addPropertyAccessor(new PropertyAccessorData(method, true, propertyType, receiverType));
|
||||||
} else if (!kotlin && false) {
|
}
|
||||||
|
else if (!kotlin && false) {
|
||||||
if (method.getParameters().size() == 0) {
|
if (method.getParameters().size() == 0) {
|
||||||
TypeSource propertyType = new TypeSource("", method.getReturnType(), method.getPsiMethod());
|
TypeSource propertyType = new TypeSource("", method.getReturnType(), method.getPsiMethod());
|
||||||
members.addPropertyAccessor(new PropertyAccessorData(method, true, propertyType, null));
|
members.addPropertyAccessor(new PropertyAccessorData(method, true, propertyType, null));
|
||||||
@@ -194,7 +196,8 @@ class JavaDescriptorResolverHelper {
|
|||||||
TypeSource propertyType = new TypeSource(method.getJetMethod().propertyType(), propertyTypeParameter.getPsiParameter().getType(), propertyTypeParameter.getPsiParameter());
|
TypeSource propertyType = new TypeSource(method.getJetMethod().propertyType(), propertyTypeParameter.getPsiParameter().getType(), propertyTypeParameter.getPsiParameter());
|
||||||
|
|
||||||
members.addPropertyAccessor(new PropertyAccessorData(method, false, propertyType, receiverType));
|
members.addPropertyAccessor(new PropertyAccessorData(method, false, propertyType, receiverType));
|
||||||
} else if (!kotlin && false) {
|
}
|
||||||
|
else if (!kotlin && false) {
|
||||||
if (method.getParameters().size() == 1) {
|
if (method.getParameters().size() == 1) {
|
||||||
PsiParameter psiParameter = method.getParameters().get(0).getPsiParameter();
|
PsiParameter psiParameter = method.getParameters().get(0).getPsiParameter();
|
||||||
TypeSource propertyType = new TypeSource("", psiParameter.getType(), psiParameter);
|
TypeSource propertyType = new TypeSource("", psiParameter.getType(), psiParameter);
|
||||||
@@ -218,7 +221,8 @@ class JavaDescriptorResolverHelper {
|
|||||||
Builder builder = new Builder(new PsiClassWrapper(resolverScopeData.psiClass), resolverScopeData.staticMembers, resolverScopeData.kotlin);
|
Builder builder = new Builder(new PsiClassWrapper(resolverScopeData.psiClass), resolverScopeData.staticMembers, resolverScopeData.kotlin);
|
||||||
builder.run();
|
builder.run();
|
||||||
return builder.namedMembersMap;
|
return builder.namedMembersMap;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return Collections.emptyMap();
|
return Collections.emptyMap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -90,7 +90,8 @@ public class JavaSemanticServices {
|
|||||||
public ClassDescriptor getKotlinBuiltinClassDescriptor(@NotNull FqName qualifiedName) {
|
public ClassDescriptor getKotlinBuiltinClassDescriptor(@NotNull FqName qualifiedName) {
|
||||||
if (qualifiedName.getFqName().startsWith("jet.")) {
|
if (qualifiedName.getFqName().startsWith("jet.")) {
|
||||||
return (ClassDescriptor) JetStandardLibrary.getInstance().getLibraryScope().getClassifier(qualifiedName.getFqName().substring("jet.".length()));
|
return (ClassDescriptor) JetStandardLibrary.getInstance().getLibraryScope().getClassifier(qualifiedName.getFqName().substring("jet.".length()));
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-2
@@ -61,7 +61,8 @@ public abstract class JetTypeJetSignatureReader extends JetSignatureExceptionsAd
|
|||||||
if (descriptor == 'V') {
|
if (descriptor == 'V') {
|
||||||
return JetStandardClasses.getUnitType();
|
return JetStandardClasses.getUnitType();
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
for (JvmPrimitiveType jvmPrimitiveType : JvmPrimitiveType.values()) {
|
for (JvmPrimitiveType jvmPrimitiveType : JvmPrimitiveType.values()) {
|
||||||
if (jvmPrimitiveType.getJvmLetter() == descriptor) {
|
if (jvmPrimitiveType.getJvmLetter() == descriptor) {
|
||||||
return jetStandardLibrary.getNullablePrimitiveJetType(jvmPrimitiveType.getPrimitiveType());
|
return jetStandardLibrary.getNullablePrimitiveJetType(jvmPrimitiveType.getPrimitiveType());
|
||||||
@@ -156,7 +157,8 @@ public abstract class JetTypeJetSignatureReader extends JetSignatureExceptionsAd
|
|||||||
JetType arrayType;
|
JetType arrayType;
|
||||||
if (!nullable) {
|
if (!nullable) {
|
||||||
arrayType = jetStandardLibrary.getPrimitiveArrayJetTypeByPrimitiveJetType(primitiveType);
|
arrayType = jetStandardLibrary.getPrimitiveArrayJetTypeByPrimitiveJetType(primitiveType);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
arrayType = TypeUtils.makeNullableAsSpecified(jetStandardLibrary.getArrayType(primitiveType), nullable);
|
arrayType = TypeUtils.makeNullableAsSpecified(jetStandardLibrary.getArrayType(primitiveType), nullable);
|
||||||
}
|
}
|
||||||
JetTypeJetSignatureReader.this.done(arrayType);
|
JetTypeJetSignatureReader.this.done(arrayType);
|
||||||
|
|||||||
+2
-1
@@ -36,7 +36,8 @@ public class TypeVariableResolvers {
|
|||||||
public static List<TypeParameterDescriptor> getTypeParameterDescriptors(@NotNull ClassOrNamespaceDescriptor clazz) {
|
public static List<TypeParameterDescriptor> getTypeParameterDescriptors(@NotNull ClassOrNamespaceDescriptor clazz) {
|
||||||
if (clazz instanceof ClassDescriptor) {
|
if (clazz instanceof ClassDescriptor) {
|
||||||
return ((ClassDescriptor) clazz).getTypeConstructor().getParameters();
|
return ((ClassDescriptor) clazz).getTypeConstructor().getParameters();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return new ArrayList<TypeParameterDescriptor>(0);
|
return new ArrayList<TypeParameterDescriptor>(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -47,7 +47,8 @@ public class PsiAnnotationUtils {
|
|||||||
private static <T> T getAttribute(@Nullable PsiAnnotation annotation, @NotNull String field, @NotNull T defaultValue) {
|
private static <T> T getAttribute(@Nullable PsiAnnotation annotation, @NotNull String field, @NotNull T defaultValue) {
|
||||||
if (annotation == null) {
|
if (annotation == null) {
|
||||||
return defaultValue;
|
return defaultValue;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
PsiAnnotationMemberValue value = annotation.findAttributeValue(field);
|
PsiAnnotationMemberValue value = annotation.findAttributeValue(field);
|
||||||
if (value instanceof PsiLiteralExpression) {
|
if (value instanceof PsiLiteralExpression) {
|
||||||
PsiLiteralExpression attributeValue = (PsiLiteralExpression) value;
|
PsiLiteralExpression attributeValue = (PsiLiteralExpression) value;
|
||||||
|
|||||||
@@ -62,7 +62,8 @@ public class DefaultModuleConfiguration implements ModuleConfiguration {
|
|||||||
if (DescriptorUtils.getFQName(namespaceDescriptor).equals(JetStandardClasses.STANDARD_CLASSES_FQNAME.toUnsafe())) {
|
if (DescriptorUtils.getFQName(namespaceDescriptor).equals(JetStandardClasses.STANDARD_CLASSES_FQNAME.toUnsafe())) {
|
||||||
if (!extendBuiltins) {
|
if (!extendBuiltins) {
|
||||||
namespaceMemberScope.importScope(JetStandardClasses.STANDARD_CLASSES);
|
namespaceMemberScope.importScope(JetStandardClasses.STANDARD_CLASSES);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
namespaceMemberScope.importScope(JetStandardLibrary.getInstance().getLibraryScope());
|
namespaceMemberScope.importScope(JetStandardLibrary.getInstance().getLibraryScope());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -264,13 +264,15 @@ public class JetControlFlowProcessor {
|
|||||||
else if (left instanceof JetArrayAccessExpression) {
|
else if (left instanceof JetArrayAccessExpression) {
|
||||||
JetArrayAccessExpression arrayAccessExpression = (JetArrayAccessExpression) left;
|
JetArrayAccessExpression arrayAccessExpression = (JetArrayAccessExpression) left;
|
||||||
visitAssignToArrayAccess(expression, arrayAccessExpression);
|
visitAssignToArrayAccess(expression, arrayAccessExpression);
|
||||||
} else if (left instanceof JetQualifiedExpression) {
|
}
|
||||||
|
else if (left instanceof JetQualifiedExpression) {
|
||||||
assert !(left instanceof JetHashQualifiedExpression) : left; // TODO
|
assert !(left instanceof JetHashQualifiedExpression) : left; // TODO
|
||||||
JetQualifiedExpression qualifiedExpression = (JetQualifiedExpression) left;
|
JetQualifiedExpression qualifiedExpression = (JetQualifiedExpression) left;
|
||||||
value(qualifiedExpression.getReceiverExpression(), false);
|
value(qualifiedExpression.getReceiverExpression(), false);
|
||||||
value(expression.getOperationReference(), false);
|
value(expression.getOperationReference(), false);
|
||||||
builder.write(expression, left);
|
builder.write(expression, left);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
builder.unsupported(expression); // TODO
|
builder.unsupported(expression); // TODO
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-2
@@ -69,10 +69,12 @@ public class MutableClassDescriptorLite extends MutableDeclarationDescriptor imp
|
|||||||
private static boolean isStatic(DeclarationDescriptor declarationDescriptor) {
|
private static boolean isStatic(DeclarationDescriptor declarationDescriptor) {
|
||||||
if (declarationDescriptor instanceof NamespaceDescriptor) {
|
if (declarationDescriptor instanceof NamespaceDescriptor) {
|
||||||
return true;
|
return true;
|
||||||
} else if (declarationDescriptor instanceof ClassDescriptor) {
|
}
|
||||||
|
else if (declarationDescriptor instanceof ClassDescriptor) {
|
||||||
ClassDescriptor classDescriptor = (ClassDescriptor) declarationDescriptor;
|
ClassDescriptor classDescriptor = (ClassDescriptor) declarationDescriptor;
|
||||||
return classDescriptor.getKind() == ClassKind.OBJECT || classDescriptor.getKind() == ClassKind.ENUM_CLASS;
|
return classDescriptor.getKind() == ClassKind.OBJECT || classDescriptor.getKind() == ClassKind.ENUM_CLASS;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -80,7 +80,8 @@ public class SimpleFunctionDescriptorImpl extends FunctionDescriptorImpl impleme
|
|||||||
getAnnotations(),
|
getAnnotations(),
|
||||||
getName(),
|
getName(),
|
||||||
kind);
|
kind);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return new SimpleFunctionDescriptorImpl(
|
return new SimpleFunctionDescriptorImpl(
|
||||||
newOwner,
|
newOwner,
|
||||||
// TODO : safeSubstitute
|
// TODO : safeSubstitute
|
||||||
|
|||||||
@@ -483,7 +483,8 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
if (!at(LBRACE)) {
|
if (!at(LBRACE)) {
|
||||||
assert _atSet(LABELS);
|
assert _atSet(LABELS);
|
||||||
parsePrefixExpression();
|
parsePrefixExpression();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
parseFunctionLiteral();
|
parseFunctionLiteral();
|
||||||
}
|
}
|
||||||
success = true;
|
success = true;
|
||||||
@@ -704,7 +705,8 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
}
|
}
|
||||||
else if (at(NULL_KEYWORD)) {
|
else if (at(NULL_KEYWORD)) {
|
||||||
parseOneTokenExpression(NULL);
|
parseOneTokenExpression(NULL);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -735,7 +737,8 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
myJetParsing.parseModifierList(MODIFIER_LIST, true);
|
myJetParsing.parseModifierList(MODIFIER_LIST, true);
|
||||||
myJetParsing.parseProperty(true);
|
myJetParsing.parseProperty(true);
|
||||||
property.done(PROPERTY);
|
property.done(PROPERTY);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
parseExpression();
|
parseExpression();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -780,13 +783,16 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
|
|
||||||
if (atSet(WHEN_CONDITION_RECOVERY_SET)) {
|
if (atSet(WHEN_CONDITION_RECOVERY_SET)) {
|
||||||
error("Expecting an element");
|
error("Expecting an element");
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
parseExpressionPreferringBlocks();
|
parseExpressionPreferringBlocks();
|
||||||
}
|
}
|
||||||
} else if (!atSet(WHEN_CONDITION_RECOVERY_SET)) {
|
}
|
||||||
|
else if (!atSet(WHEN_CONDITION_RECOVERY_SET)) {
|
||||||
errorAndAdvance("Expecting '->'");
|
errorAndAdvance("Expecting '->'");
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
parseWhenEntryNotElse();
|
parseWhenEntryNotElse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -809,7 +815,8 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
expect(ARROW, "Expecting '->' or 'when'", WHEN_CONDITION_RECOVERY_SET);
|
expect(ARROW, "Expecting '->' or 'when'", WHEN_CONDITION_RECOVERY_SET);
|
||||||
if (atSet(WHEN_CONDITION_RECOVERY_SET)) {
|
if (atSet(WHEN_CONDITION_RECOVERY_SET)) {
|
||||||
error("Expecting an element");
|
error("Expecting an element");
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
parseExpressionPreferringBlocks();
|
parseExpressionPreferringBlocks();
|
||||||
}
|
}
|
||||||
// SEMI is consumed in parseWhenEntry
|
// SEMI is consumed in parseWhenEntry
|
||||||
@@ -833,24 +840,29 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
|
|
||||||
if (atSet(WHEN_CONDITION_RECOVERY_SET_WITH_ARROW)) {
|
if (atSet(WHEN_CONDITION_RECOVERY_SET_WITH_ARROW)) {
|
||||||
error("Expecting an element");
|
error("Expecting an element");
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
parseExpression();
|
parseExpression();
|
||||||
}
|
}
|
||||||
condition.done(WHEN_CONDITION_IN_RANGE);
|
condition.done(WHEN_CONDITION_IN_RANGE);
|
||||||
} else if (at(IS_KEYWORD) || at(NOT_IS)) {
|
}
|
||||||
|
else if (at(IS_KEYWORD) || at(NOT_IS)) {
|
||||||
advance(); // IS_KEYWORD or NOT_IS
|
advance(); // IS_KEYWORD or NOT_IS
|
||||||
|
|
||||||
if (atSet(WHEN_CONDITION_RECOVERY_SET_WITH_ARROW)) {
|
if (atSet(WHEN_CONDITION_RECOVERY_SET_WITH_ARROW)) {
|
||||||
error("Expecting a type or a decomposer pattern");
|
error("Expecting a type or a decomposer pattern");
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
parsePattern();
|
parsePattern();
|
||||||
}
|
}
|
||||||
condition.done(WHEN_CONDITION_IS_PATTERN);
|
condition.done(WHEN_CONDITION_IS_PATTERN);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
PsiBuilder.Marker expressionPattern = mark();
|
PsiBuilder.Marker expressionPattern = mark();
|
||||||
if (atSet(WHEN_CONDITION_RECOVERY_SET_WITH_ARROW)) {
|
if (atSet(WHEN_CONDITION_RECOVERY_SET_WITH_ARROW)) {
|
||||||
error("Expecting an expression, is-condition or in-condition");
|
error("Expecting an expression, is-condition or in-condition");
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
parseExpression();
|
parseExpression();
|
||||||
}
|
}
|
||||||
expressionPattern.done(EXPRESSION_PATTERN);
|
expressionPattern.done(EXPRESSION_PATTERN);
|
||||||
@@ -899,27 +911,33 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
rollbackMarker.rollbackTo();
|
rollbackMarker.rollbackTo();
|
||||||
parseBinaryExpression(Precedence.ELVIS);
|
parseBinaryExpression(Precedence.ELVIS);
|
||||||
pattern.done(DECOMPOSER_PATTERN);
|
pattern.done(DECOMPOSER_PATTERN);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
rollbackMarker.drop();
|
rollbackMarker.drop();
|
||||||
pattern.done(TYPE_PATTERN);
|
pattern.done(TYPE_PATTERN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (at(HASH)) {
|
}
|
||||||
|
else if (at(HASH)) {
|
||||||
parseTuplePattern(TUPLE_PATTERN_ENTRY);
|
parseTuplePattern(TUPLE_PATTERN_ENTRY);
|
||||||
pattern.done(TUPLE_PATTERN);
|
pattern.done(TUPLE_PATTERN);
|
||||||
}
|
}
|
||||||
else if (at(MUL)) {
|
else if (at(MUL)) {
|
||||||
advance(); // MUL
|
advance(); // MUL
|
||||||
pattern.done(WILDCARD_PATTERN);
|
pattern.done(WILDCARD_PATTERN);
|
||||||
} else if (at(VAL_KEYWORD)) {
|
}
|
||||||
|
else if (at(VAL_KEYWORD)) {
|
||||||
parseBindingPattern();
|
parseBindingPattern();
|
||||||
pattern.done(BINDING_PATTERN);
|
pattern.done(BINDING_PATTERN);
|
||||||
} else if (at(OPEN_QUOTE)) {
|
}
|
||||||
|
else if (at(OPEN_QUOTE)) {
|
||||||
parseStringTemplate();
|
parseStringTemplate();
|
||||||
pattern.done(EXPRESSION_PATTERN);
|
pattern.done(EXPRESSION_PATTERN);
|
||||||
} else if (parseLiteralConstant()) {
|
}
|
||||||
|
else if (parseLiteralConstant()) {
|
||||||
pattern.done(EXPRESSION_PATTERN);
|
pattern.done(EXPRESSION_PATTERN);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
errorUntil("Pattern expected", TokenSet.create(RBRACE, ARROW));
|
errorUntil("Pattern expected", TokenSet.create(RBRACE, ARROW));
|
||||||
pattern.drop();
|
pattern.drop();
|
||||||
}
|
}
|
||||||
@@ -997,14 +1015,16 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
|
|
||||||
parsePattern();
|
parsePattern();
|
||||||
subCondition.done(WHEN_CONDITION_IS_PATTERN);
|
subCondition.done(WHEN_CONDITION_IS_PATTERN);
|
||||||
} else if (at(IN_KEYWORD) || at(NOT_IN)) {
|
}
|
||||||
|
else if (at(IN_KEYWORD) || at(NOT_IN)) {
|
||||||
PsiBuilder.Marker mark = mark();
|
PsiBuilder.Marker mark = mark();
|
||||||
advance(); // IN_KEYWORD ot NOT_IN
|
advance(); // IN_KEYWORD ot NOT_IN
|
||||||
mark.done(OPERATION_REFERENCE);
|
mark.done(OPERATION_REFERENCE);
|
||||||
|
|
||||||
parseExpression();
|
parseExpression();
|
||||||
subCondition.done(WHEN_CONDITION_IN_RANGE);
|
subCondition.done(WHEN_CONDITION_IN_RANGE);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
subCondition.drop();
|
subCondition.drop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1047,7 +1067,8 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
PsiBuilder.Marker simpleName = mark();
|
PsiBuilder.Marker simpleName = mark();
|
||||||
if (at(FIELD_IDENTIFIER)) {
|
if (at(FIELD_IDENTIFIER)) {
|
||||||
advance(); //
|
advance(); //
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
expect(IDENTIFIER, "Expecting an identifier");
|
expect(IDENTIFIER, "Expecting an identifier");
|
||||||
}
|
}
|
||||||
simpleName.done(REFERENCE_EXPRESSION);
|
simpleName.done(REFERENCE_EXPRESSION);
|
||||||
@@ -1066,7 +1087,8 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
if (declType != null) {
|
if (declType != null) {
|
||||||
decl.done(declType);
|
decl.done(declType);
|
||||||
return true;
|
return true;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
decl.rollbackTo();
|
decl.rollbackTo();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -1343,9 +1365,11 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
}
|
}
|
||||||
if (at(SEMICOLON)) {
|
if (at(SEMICOLON)) {
|
||||||
while (at(SEMICOLON)) advance(); // SEMICOLON
|
while (at(SEMICOLON)) advance(); // SEMICOLON
|
||||||
} else if (at(RBRACE)) {
|
}
|
||||||
|
else if (at(RBRACE)) {
|
||||||
break;
|
break;
|
||||||
} else if (!myBuilder.newlineBeforeCurrentToken()) {
|
}
|
||||||
|
else if (!myBuilder.newlineBeforeCurrentToken()) {
|
||||||
errorUntil("Unexpected tokens (use ';' to separate expressions on the same line)", TokenSet.create(EOL_OR_SEMICOLON));
|
errorUntil("Unexpected tokens (use ';' to separate expressions on the same line)", TokenSet.create(EOL_OR_SEMICOLON));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1740,7 +1764,8 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
advance(); // EQ
|
advance(); // EQ
|
||||||
parseExpression();
|
parseExpression();
|
||||||
entry.done(LABELED_TUPLE_ENTRY);
|
entry.done(LABELED_TUPLE_ENTRY);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
parseExpression();
|
parseExpression();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -149,7 +149,8 @@ public class JetParsing extends AbstractJetParsing {
|
|||||||
firstEntry.drop();
|
firstEntry.drop();
|
||||||
|
|
||||||
consumeIf(SEMICOLON);
|
consumeIf(SEMICOLON);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
firstEntry.rollbackTo();
|
firstEntry.rollbackTo();
|
||||||
}
|
}
|
||||||
namespaceHeader.done(NAMESPACE_HEADER);
|
namespaceHeader.done(NAMESPACE_HEADER);
|
||||||
@@ -323,7 +324,8 @@ public class JetParsing extends AbstractJetParsing {
|
|||||||
}
|
}
|
||||||
if (empty) {
|
if (empty) {
|
||||||
list.drop();
|
list.drop();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
list.done(nodeType);
|
list.done(nodeType);
|
||||||
}
|
}
|
||||||
return !empty;
|
return !empty;
|
||||||
@@ -634,7 +636,8 @@ public class JetParsing extends AbstractJetParsing {
|
|||||||
else if (keywordToken == OBJECT_KEYWORD) {
|
else if (keywordToken == OBJECT_KEYWORD) {
|
||||||
parseObject(true, true);
|
parseObject(true, true);
|
||||||
declType = OBJECT_DECLARATION;
|
declType = OBJECT_DECLARATION;
|
||||||
} else if (keywordToken == LBRACE) {
|
}
|
||||||
|
else if (keywordToken == LBRACE) {
|
||||||
parseBlock();
|
parseBlock();
|
||||||
declType = ANONYMOUS_INITIALIZER;
|
declType = ANONYMOUS_INITIALIZER;
|
||||||
}
|
}
|
||||||
@@ -749,7 +752,8 @@ public class JetParsing extends AbstractJetParsing {
|
|||||||
parseTypeRef();
|
parseTypeRef();
|
||||||
reference.done(CONSTRUCTOR_CALLEE);
|
reference.done(CONSTRUCTOR_CALLEE);
|
||||||
type = DELEGATOR_SUPER_CALL;
|
type = DELEGATOR_SUPER_CALL;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
errorWithRecovery("Expecting constructor call (this(...)) or supertype initializer", TokenSet.create(LBRACE, COMMA));
|
errorWithRecovery("Expecting constructor call (this(...)) or supertype initializer", TokenSet.create(LBRACE, COMMA));
|
||||||
initializer.drop();
|
initializer.drop();
|
||||||
return;
|
return;
|
||||||
@@ -818,7 +822,8 @@ public class JetParsing extends AbstractJetParsing {
|
|||||||
public JetNodeType parseProperty(boolean local) {
|
public JetNodeType parseProperty(boolean local) {
|
||||||
if (at(VAL_KEYWORD) || at(VAR_KEYWORD)) {
|
if (at(VAL_KEYWORD) || at(VAR_KEYWORD)) {
|
||||||
advance(); // VAL_KEYWORD or VAR_KEYWORD
|
advance(); // VAL_KEYWORD or VAR_KEYWORD
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
errorAndAdvance("Expecting 'val' or 'var'");
|
errorAndAdvance("Expecting 'val' or 'var'");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1034,7 +1039,8 @@ public class JetParsing extends AbstractJetParsing {
|
|||||||
if (!parseIdeTemplate()) {
|
if (!parseIdeTemplate()) {
|
||||||
expect(IDENTIFIER, "Expecting " + title + " name or receiver type", nameFollow);
|
expect(IDENTIFIER, "Expecting " + title + " name or receiver type", nameFollow);
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
if (parseIdeTemplate()) {
|
if (parseIdeTemplate()) {
|
||||||
expect(DOT, "Expecting '.' after receiver template");
|
expect(DOT, "Expecting '.' after receiver template");
|
||||||
}
|
}
|
||||||
@@ -1244,7 +1250,8 @@ public class JetParsing extends AbstractJetParsing {
|
|||||||
PsiBuilder.Marker reference = mark();
|
PsiBuilder.Marker reference = mark();
|
||||||
if (expect(IDENTIFIER, "Expecting type parameter name", TokenSet.orSet(TokenSet.create(COLON, COMMA), TYPE_REF_FIRST))) {
|
if (expect(IDENTIFIER, "Expecting type parameter name", TokenSet.orSet(TokenSet.create(COLON, COMMA), TYPE_REF_FIRST))) {
|
||||||
reference.done(REFERENCE_EXPRESSION);
|
reference.done(REFERENCE_EXPRESSION);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
reference.drop();
|
reference.drop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1621,7 +1628,8 @@ public class JetParsing extends AbstractJetParsing {
|
|||||||
parseTypeRef();
|
parseTypeRef();
|
||||||
valueParameter.done(VALUE_PARAMETER);
|
valueParameter.done(VALUE_PARAMETER);
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
parseValueParameter();
|
parseValueParameter();
|
||||||
}
|
}
|
||||||
if (!at(COMMA)) break;
|
if (!at(COMMA)) break;
|
||||||
@@ -1708,7 +1716,8 @@ public class JetParsing extends AbstractJetParsing {
|
|||||||
mark.done(nodeType);
|
mark.done(nodeType);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,8 @@ public abstract class JetNamedDeclaration extends JetDeclaration implements PsiN
|
|||||||
if (identifier != null) {
|
if (identifier != null) {
|
||||||
String text = identifier.getText();
|
String text = identifier.getText();
|
||||||
return text != null ? JetPsiUtil.unquoteIdentifier(text) : null;
|
return text != null ? JetPsiUtil.unquoteIdentifier(text) : null;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -268,7 +268,8 @@ public class JetPsiUtil {
|
|||||||
List<JetDeclaration> declarations = file.getDeclarations();
|
List<JetDeclaration> declarations = file.getDeclarations();
|
||||||
if (declarations.size() == 1) {
|
if (declarations.size() == 1) {
|
||||||
file.delete();
|
file.delete();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
PsiElement parent = clazz.getParent();
|
PsiElement parent = clazz.getParent();
|
||||||
CodeEditUtil.removeChild(parent.getNode(), clazz.getNode());
|
CodeEditUtil.removeChild(parent.getNode(), clazz.getNode());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,8 @@ public class JetSimpleNameExpression extends JetReferenceExpression {
|
|||||||
if (!isFirstPartInQualifiedExpression(qualifiedExpression)) {
|
if (!isFirstPartInQualifiedExpression(qualifiedExpression)) {
|
||||||
return qualifiedExpression.getReceiverExpression();
|
return qualifiedExpression.getReceiverExpression();
|
||||||
}
|
}
|
||||||
} else if (parent instanceof JetCallExpression) {
|
}
|
||||||
|
else if (parent instanceof JetCallExpression) {
|
||||||
//This is in case `a().b()`
|
//This is in case `a().b()`
|
||||||
JetCallExpression callExpression = (JetCallExpression) parent;
|
JetCallExpression callExpression = (JetCallExpression) parent;
|
||||||
parent = callExpression.getParent();
|
parent = callExpression.getParent();
|
||||||
|
|||||||
@@ -259,7 +259,8 @@ public class DescriptorResolver {
|
|||||||
if (typeReference == null) {
|
if (typeReference == null) {
|
||||||
trace.report(VALUE_PARAMETER_WITH_NO_TYPE_ANNOTATION.on(valueParameter));
|
trace.report(VALUE_PARAMETER_WITH_NO_TYPE_ANNOTATION.on(valueParameter));
|
||||||
type = ErrorUtils.createErrorType("Type annotation was missing");
|
type = ErrorUtils.createErrorType("Type annotation was missing");
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
type = typeResolver.resolveType(parameterScope, typeReference, trace, true);
|
type = typeResolver.resolveType(parameterScope, typeReference, trace, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -297,7 +298,8 @@ public class DescriptorResolver {
|
|||||||
JetType arrayType = JetStandardLibrary.getInstance().getPrimitiveArrayJetTypeByPrimitiveJetType(type);
|
JetType arrayType = JetStandardLibrary.getInstance().getPrimitiveArrayJetTypeByPrimitiveJetType(type);
|
||||||
if (arrayType != null) {
|
if (arrayType != null) {
|
||||||
return arrayType;
|
return arrayType;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return JetStandardLibrary.getInstance().getArrayType(type);
|
return JetStandardLibrary.getInstance().getArrayType(type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -472,7 +474,8 @@ public class DescriptorResolver {
|
|||||||
|| (containingDeclaration instanceof ClassDescriptor);
|
|| (containingDeclaration instanceof ClassDescriptor);
|
||||||
if (isProperty) {
|
if (isProperty) {
|
||||||
return resolveObjectDeclarationAsPropertyDescriptor(containingDeclaration, objectDeclaration, classDescriptor, trace);
|
return resolveObjectDeclarationAsPropertyDescriptor(containingDeclaration, objectDeclaration, classDescriptor, trace);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return resolveObjectDeclarationAsLocalVariable(containingDeclaration, objectDeclaration, classDescriptor, trace);
|
return resolveObjectDeclarationAsLocalVariable(containingDeclaration, objectDeclaration, classDescriptor, trace);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -621,7 +624,8 @@ public class DescriptorResolver {
|
|||||||
trace.report(PROPERTY_WITH_NO_TYPE_NO_INITIALIZER.on(nameIdentifier));
|
trace.report(PROPERTY_WITH_NO_TYPE_NO_INITIALIZER.on(nameIdentifier));
|
||||||
}
|
}
|
||||||
return ErrorUtils.createErrorType("No type, no body");
|
return ErrorUtils.createErrorType("No type, no body");
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
// TODO : a risk of a memory leak
|
// TODO : a risk of a memory leak
|
||||||
LazyValue<JetType> lazyValue = new LazyValueWithDefault<JetType>(ErrorUtils.createErrorType("Recursive dependency")) {
|
LazyValue<JetType> lazyValue = new LazyValueWithDefault<JetType>(ErrorUtils.createErrorType("Recursive dependency")) {
|
||||||
@Override
|
@Override
|
||||||
@@ -636,7 +640,8 @@ public class DescriptorResolver {
|
|||||||
return lazyValue.get();
|
return lazyValue.get();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return typeResolver.resolveType(scope, propertyTypeRef, trace, true);
|
return typeResolver.resolveType(scope, propertyTypeRef, trace, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -271,9 +271,11 @@ public class DescriptorUtils {
|
|||||||
if (classifier instanceof ClassDescriptor) {
|
if (classifier instanceof ClassDescriptor) {
|
||||||
ClassDescriptor clazz = (ClassDescriptor) classifier;
|
ClassDescriptor clazz = (ClassDescriptor) classifier;
|
||||||
return clazz.getKind() == ClassKind.OBJECT || clazz.getKind() == ClassKind.ENUM_ENTRY;
|
return clazz.getKind() == ClassKind.OBJECT || clazz.getKind() == ClassKind.ENUM_ENTRY;
|
||||||
} else if (classifier instanceof TypeParameterDescriptor) {
|
}
|
||||||
|
else if (classifier instanceof TypeParameterDescriptor) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
throw new IllegalStateException("unknown classifier: " + classifier);
|
throw new IllegalStateException("unknown classifier: " + classifier);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,7 +75,8 @@ public class FqNameUnsafe {
|
|||||||
if (lastDot >= 0) {
|
if (lastDot >= 0) {
|
||||||
shortName = fqName.substring(lastDot + 1);
|
shortName = fqName.substring(lastDot + 1);
|
||||||
parent = new FqNameUnsafe(fqName.substring(0, lastDot));
|
parent = new FqNameUnsafe(fqName.substring(0, lastDot));
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
shortName = fqName;
|
shortName = fqName;
|
||||||
parent = FqName.ROOT.toUnsafe();
|
parent = FqName.ROOT.toUnsafe();
|
||||||
}
|
}
|
||||||
@@ -121,7 +122,8 @@ public class FqNameUnsafe {
|
|||||||
String childFqName;
|
String childFqName;
|
||||||
if (isRoot()) {
|
if (isRoot()) {
|
||||||
childFqName = name;
|
childFqName = name;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
childFqName = fqName + "." + name;
|
childFqName = fqName + "." + name;
|
||||||
}
|
}
|
||||||
return new FqNameUnsafe(childFqName, this, name);
|
return new FqNameUnsafe(childFqName, this, name);
|
||||||
|
|||||||
@@ -102,10 +102,12 @@ public class OverloadResolver {
|
|||||||
if (containingDeclaration instanceof NamespaceDescriptor) {
|
if (containingDeclaration instanceof NamespaceDescriptor) {
|
||||||
NamespaceDescriptor namespaceDescriptor = (NamespaceDescriptor) containingDeclaration;
|
NamespaceDescriptor namespaceDescriptor = (NamespaceDescriptor) containingDeclaration;
|
||||||
inNamespaces.put(new Key(namespaceDescriptor, klass.getName()), klass.getConstructors());
|
inNamespaces.put(new Key(namespaceDescriptor, klass.getName()), klass.getConstructors());
|
||||||
} else if (containingDeclaration instanceof ClassDescriptor) {
|
}
|
||||||
|
else if (containingDeclaration instanceof ClassDescriptor) {
|
||||||
ClassDescriptor classDescriptor = (ClassDescriptor) containingDeclaration;
|
ClassDescriptor classDescriptor = (ClassDescriptor) containingDeclaration;
|
||||||
inClasses.put(classDescriptor, klass.getConstructors());
|
inClasses.put(classDescriptor, klass.getConstructors());
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
throw new IllegalStateException();
|
throw new IllegalStateException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,11 +52,14 @@ public class OverloadUtil {
|
|||||||
private static int braceCount(CallableDescriptor a) {
|
private static int braceCount(CallableDescriptor a) {
|
||||||
if (a instanceof PropertyDescriptor) {
|
if (a instanceof PropertyDescriptor) {
|
||||||
return 0;
|
return 0;
|
||||||
} else if (a instanceof SimpleFunctionDescriptor) {
|
}
|
||||||
|
else if (a instanceof SimpleFunctionDescriptor) {
|
||||||
return 1;
|
return 1;
|
||||||
} else if (a instanceof ConstructorDescriptor) {
|
}
|
||||||
|
else if (a instanceof ConstructorDescriptor) {
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
throw new IllegalStateException();
|
throw new IllegalStateException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,9 +124,11 @@ public class OverrideResolver {
|
|||||||
public void addToScope(@NotNull CallableMemberDescriptor fakeOverride) {
|
public void addToScope(@NotNull CallableMemberDescriptor fakeOverride) {
|
||||||
if (fakeOverride instanceof PropertyDescriptor) {
|
if (fakeOverride instanceof PropertyDescriptor) {
|
||||||
classDescriptor.getScopeForMemberLookupAsWritableScope().addPropertyDescriptor((PropertyDescriptor) fakeOverride);
|
classDescriptor.getScopeForMemberLookupAsWritableScope().addPropertyDescriptor((PropertyDescriptor) fakeOverride);
|
||||||
} else if (fakeOverride instanceof SimpleFunctionDescriptor) {
|
}
|
||||||
|
else if (fakeOverride instanceof SimpleFunctionDescriptor) {
|
||||||
classDescriptor.getScopeForMemberLookupAsWritableScope().addFunctionDescriptor((SimpleFunctionDescriptor) fakeOverride);
|
classDescriptor.getScopeForMemberLookupAsWritableScope().addFunctionDescriptor((SimpleFunctionDescriptor) fakeOverride);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
throw new IllegalStateException(fakeOverride.getClass().getName());
|
throw new IllegalStateException(fakeOverride.getClass().getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -313,16 +315,19 @@ public class OverrideResolver {
|
|||||||
if (descriptor.getModality() == Modality.ABSTRACT) {
|
if (descriptor.getModality() == Modality.ABSTRACT) {
|
||||||
//abstractNoImpl.add(descriptor);
|
//abstractNoImpl.add(descriptor);
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
Collection<CallableMemberDescriptor> overridenDeclarations = OverridingUtil.getOverridenDeclarations(descriptor);
|
Collection<CallableMemberDescriptor> overridenDeclarations = OverridingUtil.getOverridenDeclarations(descriptor);
|
||||||
if (overridenDeclarations.size() == 0) {
|
if (overridenDeclarations.size() == 0) {
|
||||||
throw new IllegalStateException();
|
throw new IllegalStateException();
|
||||||
} else if (overridenDeclarations.size() == 1) {
|
}
|
||||||
|
else if (overridenDeclarations.size() == 1) {
|
||||||
CallableMemberDescriptor single = overridenDeclarations.iterator().next();
|
CallableMemberDescriptor single = overridenDeclarations.iterator().next();
|
||||||
if (single.getModality() == Modality.ABSTRACT) {
|
if (single.getModality() == Modality.ABSTRACT) {
|
||||||
abstractNoImpl.add(single);
|
abstractNoImpl.add(single);
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
List<CallableMemberDescriptor> nonAbstractManyImpl = Lists.newArrayList();
|
List<CallableMemberDescriptor> nonAbstractManyImpl = Lists.newArrayList();
|
||||||
for (CallableMemberDescriptor overriden : overridenDeclarations) {
|
for (CallableMemberDescriptor overriden : overridenDeclarations) {
|
||||||
if (overriden.getModality() != Modality.ABSTRACT) {
|
if (overriden.getModality() != Modality.ABSTRACT) {
|
||||||
|
|||||||
@@ -123,7 +123,8 @@ public class OverridingUtil {
|
|||||||
private static int compiledValueParameterCount(CallableDescriptor callableDescriptor) {
|
private static int compiledValueParameterCount(CallableDescriptor callableDescriptor) {
|
||||||
if (callableDescriptor.getReceiverParameter().exists()) {
|
if (callableDescriptor.getReceiverParameter().exists()) {
|
||||||
return 1 + callableDescriptor.getValueParameters().size();
|
return 1 + callableDescriptor.getValueParameters().size();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return callableDescriptor.getValueParameters().size();
|
return callableDescriptor.getValueParameters().size();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -186,7 +187,8 @@ public class OverridingUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
for (int i = 0; i < superValueParameters.size(); ++i) {
|
for (int i = 0; i < superValueParameters.size(); ++i) {
|
||||||
JetType superValueParameterType = getUpperBound(superValueParameters.get(i));
|
JetType superValueParameterType = getUpperBound(superValueParameters.get(i));
|
||||||
@@ -209,9 +211,11 @@ public class OverridingUtil {
|
|||||||
private static JetType getUpperBound(JetType type) {
|
private static JetType getUpperBound(JetType type) {
|
||||||
if (type.getConstructor().getDeclarationDescriptor() instanceof ClassDescriptor) {
|
if (type.getConstructor().getDeclarationDescriptor() instanceof ClassDescriptor) {
|
||||||
return type;
|
return type;
|
||||||
} else if (type.getConstructor().getDeclarationDescriptor() instanceof TypeParameterDescriptor) {
|
}
|
||||||
|
else if (type.getConstructor().getDeclarationDescriptor() instanceof TypeParameterDescriptor) {
|
||||||
return ((TypeParameterDescriptor) type.getConstructor().getDeclarationDescriptor()).getUpperBoundsAsType();
|
return ((TypeParameterDescriptor) type.getConstructor().getDeclarationDescriptor()).getUpperBoundsAsType();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
throw new IllegalStateException("unknown type constructor: " + type.getConstructor().getClass().getName());
|
throw new IllegalStateException("unknown type constructor: " + type.getConstructor().getClass().getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -253,7 +257,8 @@ public class OverridingUtil {
|
|||||||
private static void getOverridenDeclarations(CallableMemberDescriptor descriptor, Map<ClassDescriptor, CallableMemberDescriptor> r) {
|
private static void getOverridenDeclarations(CallableMemberDescriptor descriptor, Map<ClassDescriptor, CallableMemberDescriptor> r) {
|
||||||
if (descriptor.getKind().isReal()) {
|
if (descriptor.getKind().isReal()) {
|
||||||
r.put((ClassDescriptor) descriptor.getContainingDeclaration(), descriptor);
|
r.put((ClassDescriptor) descriptor.getContainingDeclaration(), descriptor);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
if (descriptor.getOverriddenDescriptors().isEmpty()) {
|
if (descriptor.getOverriddenDescriptors().isEmpty()) {
|
||||||
throw new IllegalStateException();
|
throw new IllegalStateException();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -102,7 +102,8 @@ public class TypeResolver {
|
|||||||
JetScope scopeForTypeParameter = getScopeForTypeParameter(typeParameterDescriptor, checkBounds);
|
JetScope scopeForTypeParameter = getScopeForTypeParameter(typeParameterDescriptor, checkBounds);
|
||||||
if (scopeForTypeParameter instanceof ErrorUtils.ErrorScope) {
|
if (scopeForTypeParameter instanceof ErrorUtils.ErrorScope) {
|
||||||
result[0] = ErrorUtils.createErrorType("?");
|
result[0] = ErrorUtils.createErrorType("?");
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
result[0] = new JetTypeImpl(
|
result[0] = new JetTypeImpl(
|
||||||
annotations,
|
annotations,
|
||||||
typeParameterDescriptor.getTypeConstructor(),
|
typeParameterDescriptor.getTypeConstructor(),
|
||||||
@@ -130,10 +131,12 @@ public class TypeResolver {
|
|||||||
if (actualArgumentCount != expectedArgumentCount) {
|
if (actualArgumentCount != expectedArgumentCount) {
|
||||||
if (actualArgumentCount == 0) {
|
if (actualArgumentCount == 0) {
|
||||||
trace.report(WRONG_NUMBER_OF_TYPE_ARGUMENTS.on(type, expectedArgumentCount));
|
trace.report(WRONG_NUMBER_OF_TYPE_ARGUMENTS.on(type, expectedArgumentCount));
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
trace.report(WRONG_NUMBER_OF_TYPE_ARGUMENTS.on(type.getTypeArgumentList(), expectedArgumentCount));
|
trace.report(WRONG_NUMBER_OF_TYPE_ARGUMENTS.on(type.getTypeArgumentList(), expectedArgumentCount));
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
result[0] = new JetTypeImpl(
|
result[0] = new JetTypeImpl(
|
||||||
annotations,
|
annotations,
|
||||||
typeConstructor,
|
typeConstructor,
|
||||||
|
|||||||
+4
-2
@@ -224,7 +224,8 @@ import static org.jetbrains.jet.lang.resolve.BindingContext.REFERENCE_TARGET;
|
|||||||
|
|
||||||
if (allBases.size() == 1) {
|
if (allBases.size() == 1) {
|
||||||
return allBases.iterator().next();
|
return allBases.iterator().next();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
// TODO remove parameter names and parameter default values
|
// TODO remove parameter names and parameter default values
|
||||||
return descriptor;
|
return descriptor;
|
||||||
}
|
}
|
||||||
@@ -233,7 +234,8 @@ import static org.jetbrains.jet.lang.resolve.BindingContext.REFERENCE_TARGET;
|
|||||||
private static <D extends CallableDescriptor> void getAllDescriptorsForValueArgumentsResolving(D descriptor, Set<D> dest) {
|
private static <D extends CallableDescriptor> void getAllDescriptorsForValueArgumentsResolving(D descriptor, Set<D> dest) {
|
||||||
if (descriptor.getOverriddenDescriptors().isEmpty()) {
|
if (descriptor.getOverriddenDescriptors().isEmpty()) {
|
||||||
dest.add(descriptor);
|
dest.add(descriptor);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
for (CallableDescriptor overriden : descriptor.getOverriddenDescriptors()) {
|
for (CallableDescriptor overriden : descriptor.getOverriddenDescriptors()) {
|
||||||
getAllDescriptorsForValueArgumentsResolving((D) overriden, dest);
|
getAllDescriptorsForValueArgumentsResolving((D) overriden, dest);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -209,7 +209,8 @@ public class CommonSupertypes {
|
|||||||
if (ins != null) {
|
if (ins != null) {
|
||||||
ins.add(projection.getType());
|
ins.add(projection.getType());
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
ins = null;
|
ins = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -217,7 +218,8 @@ public class CommonSupertypes {
|
|||||||
if (outs != null) {
|
if (outs != null) {
|
||||||
outs.add(projection.getType());
|
outs.add(projection.getType());
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
outs = null;
|
outs = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -232,10 +234,12 @@ public class CommonSupertypes {
|
|||||||
}
|
}
|
||||||
Variance projectionKind = variance == IN_VARIANCE ? Variance.INVARIANT : IN_VARIANCE;
|
Variance projectionKind = variance == IN_VARIANCE ? Variance.INVARIANT : IN_VARIANCE;
|
||||||
return new TypeProjection(projectionKind, intersection);
|
return new TypeProjection(projectionKind, intersection);
|
||||||
} else if (outs != null) {
|
}
|
||||||
|
else if (outs != null) {
|
||||||
Variance projectionKind = variance == OUT_VARIANCE ? Variance.INVARIANT : OUT_VARIANCE;
|
Variance projectionKind = variance == OUT_VARIANCE ? Variance.INVARIANT : OUT_VARIANCE;
|
||||||
return new TypeProjection(projectionKind, commonSupertype(outs));
|
return new TypeProjection(projectionKind, commonSupertype(outs));
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
Variance projectionKind = variance == OUT_VARIANCE ? Variance.INVARIANT : OUT_VARIANCE;
|
Variance projectionKind = variance == OUT_VARIANCE ? Variance.INVARIANT : OUT_VARIANCE;
|
||||||
return new TypeProjection(projectionKind, commonSupertype(parameterDescriptor.getUpperBounds()));
|
return new TypeProjection(projectionKind, commonSupertype(parameterDescriptor.getUpperBounds()));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,7 +86,8 @@ public class DeferredType implements JetType {
|
|||||||
try {
|
try {
|
||||||
if (lazyValue.isComputed()) {
|
if (lazyValue.isComputed()) {
|
||||||
return getActualType().toString();
|
return getActualType().toString();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return "<Not computed yet>";
|
return "<Not computed yet>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -324,7 +324,8 @@ public class TypeUtils {
|
|||||||
if (lowerThanBound(typeChecker, argument, parameterDescriptor)) {
|
if (lowerThanBound(typeChecker, argument, parameterDescriptor)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
if (canHaveSubtypes(typeChecker, argument)) {
|
if (canHaveSubtypes(typeChecker, argument)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -335,7 +336,8 @@ public class TypeUtils {
|
|||||||
if (canHaveSubtypes(typeChecker, argument)) {
|
if (canHaveSubtypes(typeChecker, argument)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
if (lowerThanBound(typeChecker, argument, parameterDescriptor)) {
|
if (lowerThanBound(typeChecker, argument, parameterDescriptor)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-6
@@ -201,7 +201,8 @@ public class ControlStructureTypingVisitor extends ExpressionTypingVisitor {
|
|||||||
conditionScope = writableScope;
|
conditionScope = writableScope;
|
||||||
context.expressionTypingServices.getBlockReturnedTypeWithWritableScope(writableScope, function.getFunctionLiteral().getBodyExpression().getStatements(), CoercionStrategy.NO_COERCION, context, context.trace);
|
context.expressionTypingServices.getBlockReturnedTypeWithWritableScope(writableScope, function.getFunctionLiteral().getBodyExpression().getStatements(), CoercionStrategy.NO_COERCION, context, context.trace);
|
||||||
context.trace.record(BindingContext.BLOCK, function);
|
context.trace.record(BindingContext.BLOCK, function);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
facade.getType(body, context.replaceScope(context.scope));
|
facade.getType(body, context.replaceScope(context.scope));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -327,9 +328,11 @@ public class ControlStructureTypingVisitor extends ExpressionTypingVisitor {
|
|||||||
OverloadResolutionResults<FunctionDescriptor> nextResolutionResults = context.resolveExactSignature(new TransientReceiver(iteratorType), "next", Collections.<JetType>emptyList());
|
OverloadResolutionResults<FunctionDescriptor> nextResolutionResults = context.resolveExactSignature(new TransientReceiver(iteratorType), "next", Collections.<JetType>emptyList());
|
||||||
if (nextResolutionResults.isAmbiguity()) {
|
if (nextResolutionResults.isAmbiguity()) {
|
||||||
context.trace.report(NEXT_AMBIGUITY.on(loopRangeExpression));
|
context.trace.report(NEXT_AMBIGUITY.on(loopRangeExpression));
|
||||||
} else if (nextResolutionResults.isNothing()) {
|
}
|
||||||
|
else if (nextResolutionResults.isNothing()) {
|
||||||
context.trace.report(NEXT_MISSING.on(loopRangeExpression));
|
context.trace.report(NEXT_MISSING.on(loopRangeExpression));
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
FunctionDescriptor nextFunction = nextResolutionResults.getResultingCall().getResultingDescriptor();
|
FunctionDescriptor nextFunction = nextResolutionResults.getResultingCall().getResultingDescriptor();
|
||||||
context.trace.record(LOOP_RANGE_NEXT, loopRange.getExpression(), nextFunction);
|
context.trace.record(LOOP_RANGE_NEXT, loopRange.getExpression(), nextFunction);
|
||||||
return nextFunction.getReturnType();
|
return nextFunction.getReturnType();
|
||||||
@@ -364,9 +367,11 @@ public class ControlStructureTypingVisitor extends ExpressionTypingVisitor {
|
|||||||
OverloadResolutionResults<FunctionDescriptor> hasNextResolutionResults = context.resolveExactSignature(new TransientReceiver(iteratorType), "hasNext", Collections.<JetType>emptyList());
|
OverloadResolutionResults<FunctionDescriptor> hasNextResolutionResults = context.resolveExactSignature(new TransientReceiver(iteratorType), "hasNext", Collections.<JetType>emptyList());
|
||||||
if (hasNextResolutionResults.isAmbiguity()) {
|
if (hasNextResolutionResults.isAmbiguity()) {
|
||||||
context.trace.report(HAS_NEXT_FUNCTION_AMBIGUITY.on(loopRange));
|
context.trace.report(HAS_NEXT_FUNCTION_AMBIGUITY.on(loopRange));
|
||||||
} else if (hasNextResolutionResults.isNothing()) {
|
}
|
||||||
|
else if (hasNextResolutionResults.isNothing()) {
|
||||||
return null;
|
return null;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
assert hasNextResolutionResults.isSuccess();
|
assert hasNextResolutionResults.isSuccess();
|
||||||
JetType hasNextReturnType = hasNextResolutionResults.getResultingDescriptor().getReturnType();
|
JetType hasNextReturnType = hasNextResolutionResults.getResultingDescriptor().getReturnType();
|
||||||
if (!isBoolean(hasNextReturnType)) {
|
if (!isBoolean(hasNextReturnType)) {
|
||||||
@@ -381,7 +386,8 @@ public class ControlStructureTypingVisitor extends ExpressionTypingVisitor {
|
|||||||
VariableDescriptor hasNextProperty = DescriptorUtils.filterNonExtensionProperty(iteratorType.getMemberScope().getProperties("hasNext"));
|
VariableDescriptor hasNextProperty = DescriptorUtils.filterNonExtensionProperty(iteratorType.getMemberScope().getProperties("hasNext"));
|
||||||
if (hasNextProperty == null) {
|
if (hasNextProperty == null) {
|
||||||
return null;
|
return null;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
JetType hasNextReturnType = hasNextProperty.getType();
|
JetType hasNextReturnType = hasNextProperty.getType();
|
||||||
if (hasNextReturnType == null) {
|
if (hasNextReturnType == null) {
|
||||||
// TODO : accessibility
|
// TODO : accessibility
|
||||||
|
|||||||
+2
-1
@@ -216,7 +216,8 @@ public class ExpressionTypingVisitorForStatements extends ExpressionTypingVisito
|
|||||||
if (!JetStandardClasses.isUnit(assignmentOperationType)) {
|
if (!JetStandardClasses.isUnit(assignmentOperationType)) {
|
||||||
context.trace.report(ASSIGNMENT_OPERATOR_SHOULD_RETURN_UNIT.on(operationSign, assignmentOperationDescriptors.getResultingDescriptor(), operationSign));
|
context.trace.report(ASSIGNMENT_OPERATOR_SHOULD_RETURN_UNIT.on(operationSign, assignmentOperationDescriptors.getResultingDescriptor(), operationSign));
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
binaryOperationTrace.commit();
|
binaryOperationTrace.commit();
|
||||||
context.trace.record(VARIABLE_REASSIGNMENT, expression);
|
context.trace.record(VARIABLE_REASSIGNMENT, expression);
|
||||||
if (left instanceof JetArrayAccessExpression) {
|
if (left instanceof JetArrayAccessExpression) {
|
||||||
|
|||||||
@@ -256,7 +256,8 @@ public class JetStandardClasses {
|
|||||||
} catch (IllegalAccessException e) {
|
} catch (IllegalAccessException e) {
|
||||||
throw new IllegalStateException(e);
|
throw new IllegalStateException(e);
|
||||||
}
|
}
|
||||||
} else if (type.isArray() && type.getComponentType() == ClassDescriptor.class) {
|
}
|
||||||
|
else if (type.isArray() && type.getComponentType() == ClassDescriptor.class) {
|
||||||
try {
|
try {
|
||||||
ClassDescriptor[] array = (ClassDescriptor[]) field.get(null);
|
ClassDescriptor[] array = (ClassDescriptor[]) field.get(null);
|
||||||
for (ClassDescriptor descriptor : array) {
|
for (ClassDescriptor descriptor : array) {
|
||||||
|
|||||||
@@ -456,7 +456,8 @@ public class DescriptorRenderer implements Renderer<DeclarationDescriptor> {
|
|||||||
if (!descriptor.equals(JetStandardClasses.getNothing())) {
|
if (!descriptor.equals(JetStandardClasses.getNothing())) {
|
||||||
Collection<? extends JetType> supertypes = descriptor.getTypeConstructor().getSupertypes();
|
Collection<? extends JetType> supertypes = descriptor.getTypeConstructor().getSupertypes();
|
||||||
if (supertypes.isEmpty() || supertypes.size() == 1 && JetStandardClasses.isAny(supertypes.iterator().next())) {
|
if (supertypes.isEmpty() || supertypes.size() == 1 && JetStandardClasses.isAny(supertypes.iterator().next())) {
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
builder.append(" : ");
|
builder.append(" : ");
|
||||||
for (Iterator<? extends JetType> iterator = supertypes.iterator(); iterator.hasNext(); ) {
|
for (Iterator<? extends JetType> iterator = supertypes.iterator(); iterator.hasNext(); ) {
|
||||||
JetType supertype = iterator.next();
|
JetType supertype = iterator.next();
|
||||||
|
|||||||
@@ -277,7 +277,8 @@ public class JetTestUtils {
|
|||||||
|
|
||||||
if ("//".equals(document.getCharsSequence().subSequence(lineStart, lineStart + 2).toString())) {
|
if ("//".equals(document.getCharsSequence().subSequence(lineStart, lineStart + 2).toString())) {
|
||||||
resultLines.add(document.getCharsSequence().subSequence(lineStart + 2, lineEnd));
|
resultLines.add(document.getCharsSequence().subSequence(lineStart + 2, lineEnd));
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,7 +73,8 @@ public class JetDiagnosticsTest extends JetLiteFixture {
|
|||||||
// TODO: check there's not syntax errors
|
// TODO: check there's not syntax errors
|
||||||
this.jetFile = null;
|
this.jetFile = null;
|
||||||
this.expectedText = this.clearText = textWithMarkers;
|
this.expectedText = this.clearText = textWithMarkers;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
expectedText = textWithMarkers;
|
expectedText = textWithMarkers;
|
||||||
clearText = CheckerTestUtil.parseDiagnosedRanges(expectedText, diagnosedRanges);
|
clearText = CheckerTestUtil.parseDiagnosedRanges(expectedText, diagnosedRanges);
|
||||||
this.javaFile = null;
|
this.javaFile = null;
|
||||||
|
|||||||
@@ -53,7 +53,8 @@ public class JetDiagnosticsTestForever {
|
|||||||
long avg100 = avg(last100) / 1000 / 1000;
|
long avg100 = avg(last100) / 1000 / 1000;
|
||||||
long minMs = min / 1000 / 1000;
|
long minMs = min / 1000 / 1000;
|
||||||
System.out.println(dMs + "ms; avg=" + avg + "ms; avg10=" + avg10 + "ms; avg100=" + avg100 + "ms; min=" + minMs + "ms; iteration=" + i);
|
System.out.println(dMs + "ms; avg=" + avg + "ms; avg10=" + avg10 + "ms; avg100=" + avg100 + "ms; min=" + minMs + "ms; iteration=" + i);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
System.out.println(dMs + "ms; iteration=" + i);
|
System.out.println(dMs + "ms; iteration=" + i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,7 +81,8 @@ public class ForTestCompileRuntime {
|
|||||||
File file = stack.pop();
|
File file = stack.pop();
|
||||||
if (file.isDirectory()) {
|
if (file.isDirectory()) {
|
||||||
stack.addAll(Arrays.asList(file.listFiles()));
|
stack.addAll(Arrays.asList(file.listFiles()));
|
||||||
} else if (file.getName().endsWith(".java")) {
|
}
|
||||||
|
else if (file.getName().endsWith(".java")) {
|
||||||
r.add(file);
|
r.add(file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-2
@@ -81,12 +81,14 @@ abstract class ForTestCompileSomething {
|
|||||||
if (file.isFile()) {
|
if (file.isFile()) {
|
||||||
os.putNextEntry(new JarEntry(pop.getFirst()));
|
os.putNextEntry(new JarEntry(pop.getFirst()));
|
||||||
Files.copy(file, os);
|
Files.copy(file, os);
|
||||||
} else if (file.isDirectory()) {
|
}
|
||||||
|
else if (file.isDirectory()) {
|
||||||
for (File child : file.listFiles()) {
|
for (File child : file.listFiles()) {
|
||||||
String path = pop.getFirst().isEmpty() ? child.getName() : pop.getFirst() + "/" + child.getName();
|
String path = pop.getFirst().isEmpty() ? child.getName() : pop.getFirst() + "/" + child.getName();
|
||||||
toCopy.add(new Pair<String, File>(path, child));
|
toCopy.add(new Pair<String, File>(path, child));
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
throw new IllegalStateException();
|
throw new IllegalStateException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,11 +86,14 @@ class NamespaceComparator {
|
|||||||
for (DeclarationDescriptor ad : nsa.getMemberScope().getAllDescriptors()) {
|
for (DeclarationDescriptor ad : nsa.getMemberScope().getAllDescriptors()) {
|
||||||
if (ad instanceof ClassifierDescriptor) {
|
if (ad instanceof ClassifierDescriptor) {
|
||||||
classifierNames.add(ad.getName());
|
classifierNames.add(ad.getName());
|
||||||
} else if (ad instanceof PropertyDescriptor) {
|
}
|
||||||
|
else if (ad instanceof PropertyDescriptor) {
|
||||||
propertyNames.add(ad.getName());
|
propertyNames.add(ad.getName());
|
||||||
} else if (ad instanceof FunctionDescriptor) {
|
}
|
||||||
|
else if (ad instanceof FunctionDescriptor) {
|
||||||
functionNames.add(ad.getName());
|
functionNames.add(ad.getName());
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
throw new AssertionError("unknown member: " + ad);
|
throw new AssertionError("unknown member: " + ad);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -269,7 +272,8 @@ class NamespaceComparator {
|
|||||||
|
|
||||||
if (prop.isVar()) {
|
if (prop.isVar()) {
|
||||||
sb.append("var ");
|
sb.append("var ");
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
sb.append("val ");
|
sb.append("val ");
|
||||||
}
|
}
|
||||||
if (!prop.getTypeParameters().isEmpty()) {
|
if (!prop.getTypeParameters().isEmpty()) {
|
||||||
@@ -297,7 +301,8 @@ class NamespaceComparator {
|
|||||||
sb.append(": ");
|
sb.append(": ");
|
||||||
if (valueParameter.getVarargElementType() != null) {
|
if (valueParameter.getVarargElementType() != null) {
|
||||||
new TypeSerializer(sb).serialize(valueParameter.getVarargElementType());
|
new TypeSerializer(sb).serialize(valueParameter.getVarargElementType());
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
new TypeSerializer(sb).serialize(valueParameter.getType());
|
new TypeSerializer(sb).serialize(valueParameter.getType());
|
||||||
}
|
}
|
||||||
if (valueParameter.hasDefaultValue()) {
|
if (valueParameter.hasDefaultValue()) {
|
||||||
@@ -308,7 +313,8 @@ class NamespaceComparator {
|
|||||||
public void serialize(Variance variance) {
|
public void serialize(Variance variance) {
|
||||||
if (variance == Variance.INVARIANT) {
|
if (variance == Variance.INVARIANT) {
|
||||||
|
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
sb.append(variance);
|
sb.append(variance);
|
||||||
sb.append(' ');
|
sb.append(' ');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -141,7 +141,8 @@ public class WriteSignatureTest extends TestCaseWithTmpdir {
|
|||||||
public void visit(String name, Object value) {
|
public void visit(String name, Object value) {
|
||||||
if (name.equals(JvmStdlibNames.JET_METHOD_TYPE_PARAMETERS_FIELD)) {
|
if (name.equals(JvmStdlibNames.JET_METHOD_TYPE_PARAMETERS_FIELD)) {
|
||||||
typeParameters = (String) value;
|
typeParameters = (String) value;
|
||||||
} else if (name.equals(JvmStdlibNames.JET_METHOD_RETURN_TYPE_FIELD)) {
|
}
|
||||||
|
else if (name.equals(JvmStdlibNames.JET_METHOD_RETURN_TYPE_FIELD)) {
|
||||||
returnType = (String) value;
|
returnType = (String) value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -156,7 +157,8 @@ public class WriteSignatureTest extends TestCaseWithTmpdir {
|
|||||||
return new EmptyVisitor();
|
return new EmptyVisitor();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return new EmptyVisitor();
|
return new EmptyVisitor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -182,7 +184,8 @@ public class WriteSignatureTest extends TestCaseWithTmpdir {
|
|||||||
return new EmptyVisitor();
|
return new EmptyVisitor();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return new EmptyVisitor();
|
return new EmptyVisitor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -215,7 +218,8 @@ public class WriteSignatureTest extends TestCaseWithTmpdir {
|
|||||||
}
|
}
|
||||||
if (allNulls) {
|
if (allNulls) {
|
||||||
return null;
|
return null;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -718,7 +718,8 @@ public class JetTypeCheckerTest extends JetLiteFixture {
|
|||||||
public void visitProperty(JetProperty property) {
|
public void visitProperty(JetProperty property) {
|
||||||
if (property.getPropertyTypeRef() != null) {
|
if (property.getPropertyTypeRef() != null) {
|
||||||
memberDeclarations.addPropertyDescriptor(descriptorResolver.resolvePropertyDescriptor(classDescriptor, parameterScope, property, JetTestUtils.DUMMY_TRACE));
|
memberDeclarations.addPropertyDescriptor(descriptorResolver.resolvePropertyDescriptor(classDescriptor, parameterScope, property, JetTestUtils.DUMMY_TRACE));
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
// TODO : Caution: a cyclic dependency possible
|
// TODO : Caution: a cyclic dependency possible
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
@@ -728,7 +729,8 @@ public class JetTypeCheckerTest extends JetLiteFixture {
|
|||||||
public void visitNamedFunction(JetNamedFunction function) {
|
public void visitNamedFunction(JetNamedFunction function) {
|
||||||
if (function.getReturnTypeRef() != null) {
|
if (function.getReturnTypeRef() != null) {
|
||||||
memberDeclarations.addFunctionDescriptor(descriptorResolver.resolveFunctionDescriptor(classDescriptor, parameterScope, function, JetTestUtils.DUMMY_TRACE));
|
memberDeclarations.addFunctionDescriptor(descriptorResolver.resolveFunctionDescriptor(classDescriptor, parameterScope, function, JetTestUtils.DUMMY_TRACE));
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
// TODO : Caution: a cyclic dependency possible
|
// TODO : Caution: a cyclic dependency possible
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -288,7 +288,8 @@ public class JetMacro extends BaseMacro {
|
|||||||
String style = null;
|
String style = null;
|
||||||
if (token instanceof JetKeywordToken) {
|
if (token instanceof JetKeywordToken) {
|
||||||
style = "keyword";
|
style = "keyword";
|
||||||
} else if (token == JetTokens.IDENTIFIER) {
|
}
|
||||||
|
else if (token == JetTokens.IDENTIFIER) {
|
||||||
for (IElementType softKeyword : JetTokens.SOFT_KEYWORDS.asSet()) {
|
for (IElementType softKeyword : JetTokens.SOFT_KEYWORDS.asSet()) {
|
||||||
if (((JetKeywordToken) softKeyword).getValue().equals(yytext.toString())) {
|
if (((JetKeywordToken) softKeyword).getValue().equals(yytext.toString())) {
|
||||||
style = "softkeyword";
|
style = "softkeyword";
|
||||||
@@ -296,9 +297,11 @@ public class JetMacro extends BaseMacro {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
style = style == null ? "plain" : style;
|
style = style == null ? "plain" : style;
|
||||||
} else if (styleMap.containsKey(token)) {
|
}
|
||||||
|
else if (styleMap.containsKey(token)) {
|
||||||
style = styleMap.get(token);
|
style = styleMap.get(token);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
style = "plain";
|
style = "plain";
|
||||||
}
|
}
|
||||||
result.append("<code class=\"jet ").append(style).append("\">");
|
result.append("<code class=\"jet ").append(style).append("\">");
|
||||||
|
|||||||
@@ -39,7 +39,8 @@ public class LockPerf {
|
|||||||
if (counter.get() == 100000000) {
|
if (counter.get() == 100000000) {
|
||||||
cdl.countDown();
|
cdl.countDown();
|
||||||
break;
|
break;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
counter.incrementAndGet();
|
counter.incrementAndGet();
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
@@ -114,17 +114,20 @@ public class ThreadRing {
|
|||||||
// System.out.println("last one");
|
// System.out.println("last one");
|
||||||
executor.shutdown();
|
executor.shutdown();
|
||||||
cdl.countDown();
|
cdl.countDown();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
m.value = nextValue;
|
m.value = nextValue;
|
||||||
nextNode.sendMessage(m);
|
nextNode.sendMessage(m);
|
||||||
}
|
}
|
||||||
isActive = false;
|
isActive = false;
|
||||||
// System.out.println("ending node "+nodeId);
|
// System.out.println("ending node "+nodeId);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
if (m.value == N) {
|
if (m.value == N) {
|
||||||
System.out.println(nodeId);
|
System.out.println(nodeId);
|
||||||
nextNode.sendMessage(new TokenMessage(nodeId, 0, true));
|
nextNode.sendMessage(new TokenMessage(nodeId, 0, true));
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
m.value = m.value + 1;
|
m.value = m.value + 1;
|
||||||
nextNode.sendMessage(m);
|
nextNode.sendMessage(m);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,7 +50,8 @@ public class JetFoldingBuilder extends FoldingBuilderEx implements DumbAware {
|
|||||||
if ((type == JetNodeTypes.BLOCK || type == JetNodeTypes.CLASS_BODY) &&
|
if ((type == JetNodeTypes.BLOCK || type == JetNodeTypes.CLASS_BODY) &&
|
||||||
!isOneLine(textRange, document)) {
|
!isOneLine(textRange, document)) {
|
||||||
descriptors.add(new FoldingDescriptor(node, textRange));
|
descriptors.add(new FoldingDescriptor(node, textRange));
|
||||||
} else if (node.getElementType() == JetTokens.IDE_TEMPLATE_START) {
|
}
|
||||||
|
else if (node.getElementType() == JetTokens.IDE_TEMPLATE_START) {
|
||||||
ASTNode next = node.getTreeNext();
|
ASTNode next = node.getTreeNext();
|
||||||
if (next != null) {
|
if (next != null) {
|
||||||
ASTNode nextNext = next.getTreeNext();
|
ASTNode nextNext = next.getTreeNext();
|
||||||
|
|||||||
@@ -49,7 +49,8 @@ public class JetIconProvider extends IconProvider {
|
|||||||
for (JetDeclaration declaration : declarations) {
|
for (JetDeclaration declaration : declarations) {
|
||||||
if (mostImportantClass == null && declaration instanceof JetClassOrObject) {
|
if (mostImportantClass == null && declaration instanceof JetClassOrObject) {
|
||||||
mostImportantClass = (JetClassOrObject) declaration;
|
mostImportantClass = (JetClassOrObject) declaration;
|
||||||
} else if (declaration instanceof JetClassOrObject) {
|
}
|
||||||
|
else if (declaration instanceof JetClassOrObject) {
|
||||||
JetClassOrObject object = (JetClassOrObject) declaration;
|
JetClassOrObject object = (JetClassOrObject) declaration;
|
||||||
if (nameWithoutExtension.equals(object.getName())) {
|
if (nameWithoutExtension.equals(object.getName())) {
|
||||||
mostImportantClass = object;
|
mostImportantClass = object;
|
||||||
|
|||||||
@@ -78,7 +78,8 @@ public final class DescriptorLookupConverter {
|
|||||||
// TODO: Support omitting brackets for one argument functions
|
// TODO: Support omitting brackets for one argument functions
|
||||||
if (functionDescriptor.getValueParameters().isEmpty()) {
|
if (functionDescriptor.getValueParameters().isEmpty()) {
|
||||||
element = element.setInsertHandler(EMPTY_FUNCTION_HANDLER);
|
element = element.setInsertHandler(EMPTY_FUNCTION_HANDLER);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
element = element.setInsertHandler(PARAMS_FUNCTION_HANDLER);
|
element = element.setInsertHandler(PARAMS_FUNCTION_HANDLER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -339,7 +339,8 @@ public class JetKeywordCompletionContributor extends CompletionContributor {
|
|||||||
if (notIdentifier) {
|
if (notIdentifier) {
|
||||||
return PlatformPatterns.psiElement().and(
|
return PlatformPatterns.psiElement().and(
|
||||||
new FilterPattern(new AndFilter(GENERAL_FILTER, NOT_IDENTIFIER_FILTER, placeFilter)));
|
new FilterPattern(new AndFilter(GENERAL_FILTER, NOT_IDENTIFIER_FILTER, placeFilter)));
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return PlatformPatterns.psiElement().and(
|
return PlatformPatterns.psiElement().and(
|
||||||
new FilterPattern(new AndFilter(GENERAL_FILTER, placeFilter)));
|
new FilterPattern(new AndFilter(GENERAL_FILTER, placeFilter)));
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -76,7 +76,8 @@ public class JetTemplateParameterTraversalPolicy implements TemplateParameterTra
|
|||||||
return PsiTreeUtil.firstChild(root);
|
return PsiTreeUtil.firstChild(root);
|
||||||
}
|
}
|
||||||
return nextLeaf;
|
return nextLeaf;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
PsiElement prevLeaf = PsiTreeUtil.prevLeaf(element);
|
PsiElement prevLeaf = PsiTreeUtil.prevLeaf(element);
|
||||||
if (prevLeaf == null) {
|
if (prevLeaf == null) {
|
||||||
PsiElement root = PsiTreeUtil.getTopmostParentOfType(element, JetFile.class);
|
PsiElement root = PsiTreeUtil.getTopmostParentOfType(element, JetFile.class);
|
||||||
|
|||||||
@@ -91,7 +91,8 @@ public class JetFunctionInsertHandler implements InsertHandler<LookupElement> {
|
|||||||
// Insert () if it's not already exist
|
// Insert () if it's not already exist
|
||||||
document.insertString(endOffset, "()");
|
document.insertString(endOffset, "()");
|
||||||
bothParentheses = true;
|
bothParentheses = true;
|
||||||
} else if (endOffset + 1 < documentText.length() && documentText.charAt(endOffset + 1) == ')') {
|
}
|
||||||
|
else if (endOffset + 1 < documentText.length() && documentText.charAt(endOffset + 1) == ')') {
|
||||||
bothParentheses = true;
|
bothParentheses = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,7 +100,8 @@ public class JetFunctionInsertHandler implements InsertHandler<LookupElement> {
|
|||||||
if (caretPosition == CaretPosition.IN_BRACKETS || !bothParentheses) {
|
if (caretPosition == CaretPosition.IN_BRACKETS || !bothParentheses) {
|
||||||
editor.getCaretModel().moveToOffset(editor.getCaretModel().getOffset() + 1);
|
editor.getCaretModel().moveToOffset(editor.getCaretModel().getOffset() + 1);
|
||||||
AutoPopupController.getInstance(context.getProject()).autoPopupParameterInfo(editor, offsetElement);
|
AutoPopupController.getInstance(context.getProject()).autoPopupParameterInfo(editor, offsetElement);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
editor.getCaretModel().moveToOffset(editor.getCaretModel().getOffset() + 2);
|
editor.getCaretModel().moveToOffset(editor.getCaretModel().getOffset() + 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,8 @@ public class KotlinQuoteHandler implements QuoteHandler {
|
|||||||
int start = iterator.getStart();
|
int start = iterator.getStart();
|
||||||
int end = iterator.getEnd();
|
int end = iterator.getEnd();
|
||||||
return end - start >= 1 && offset == end - 1;
|
return end - start >= 1 && offset == end - 1;
|
||||||
} else if (tokenType == JetTokens.CLOSING_QUOTE) {
|
}
|
||||||
|
else if (tokenType == JetTokens.CLOSING_QUOTE) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -84,7 +84,8 @@ class PropertiesHighlightingVisitor extends AfterAnalysisHighlightingVisitor {
|
|||||||
boolean namespace = descriptor.getContainingDeclaration() instanceof NamespaceDescriptor;
|
boolean namespace = descriptor.getContainingDeclaration() instanceof NamespaceDescriptor;
|
||||||
if (descriptor.getReceiverParameter() != ReceiverDescriptor.NO_RECEIVER) {
|
if (descriptor.getReceiverParameter() != ReceiverDescriptor.NO_RECEIVER) {
|
||||||
JetPsiChecker.highlightName(holder, elementToHighlight, JetHighlightingColors.EXTENSION_PROPERTY);
|
JetPsiChecker.highlightName(holder, elementToHighlight, JetHighlightingColors.EXTENSION_PROPERTY);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
JetPsiChecker.highlightName(holder, elementToHighlight,
|
JetPsiChecker.highlightName(holder, elementToHighlight,
|
||||||
namespace ? JetHighlightingColors.NAMESPACE_PROPERTY : JetHighlightingColors.INSTANCE_PROPERTY
|
namespace ? JetHighlightingColors.NAMESPACE_PROPERTY : JetHighlightingColors.INSTANCE_PROPERTY
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -54,7 +54,8 @@ class TypeKindHighlightingVisitor extends HighlightingVisitor {
|
|||||||
PsiElement target = ref.resolve();
|
PsiElement target = ref.resolve();
|
||||||
if (target instanceof JetClass) {
|
if (target instanceof JetClass) {
|
||||||
highlightClassByKind((JetClass)target, expression);
|
highlightClassByKind((JetClass)target, expression);
|
||||||
} else if (target instanceof JetTypeParameter) {
|
}
|
||||||
|
else if (target instanceof JetTypeParameter) {
|
||||||
JetPsiChecker.highlightName(holder, expression, JetHighlightingColors.TYPE_PARAMETER);
|
JetPsiChecker.highlightName(holder, expression, JetHighlightingColors.TYPE_PARAMETER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -90,12 +91,14 @@ class TypeKindHighlightingVisitor extends HighlightingVisitor {
|
|||||||
TextAttributesKey textAttributes = JetHighlightingColors.CLASS;
|
TextAttributesKey textAttributes = JetHighlightingColors.CLASS;
|
||||||
if (klass.isTrait()) {
|
if (klass.isTrait()) {
|
||||||
textAttributes = JetHighlightingColors.TRAIT;
|
textAttributes = JetHighlightingColors.TRAIT;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
JetModifierList modifierList = klass.getModifierList();
|
JetModifierList modifierList = klass.getModifierList();
|
||||||
if (modifierList != null) {
|
if (modifierList != null) {
|
||||||
if (modifierList.hasModifier(JetTokens.ANNOTATION_KEYWORD)) {
|
if (modifierList.hasModifier(JetTokens.ANNOTATION_KEYWORD)) {
|
||||||
textAttributes = JetHighlightingColors.ANNOTATION;
|
textAttributes = JetHighlightingColors.ANNOTATION;
|
||||||
} else if (modifierList.hasModifier(JetTokens.ABSTRACT_KEYWORD)) {
|
}
|
||||||
|
else if (modifierList.hasModifier(JetTokens.ABSTRACT_KEYWORD)) {
|
||||||
textAttributes = JetHighlightingColors.ABSTRACT_CLASS;
|
textAttributes = JetHighlightingColors.ABSTRACT_CLASS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,13 +30,16 @@ class DeclarationDescriptorComparator implements Comparator<DeclarationDescripto
|
|||||||
private static int getDeclarationPriority(DeclarationDescriptor descriptor) {
|
private static int getDeclarationPriority(DeclarationDescriptor descriptor) {
|
||||||
if (descriptor instanceof ClassDescriptor) {
|
if (descriptor instanceof ClassDescriptor) {
|
||||||
return 4;
|
return 4;
|
||||||
} else if (descriptor instanceof PropertyDescriptor) {
|
}
|
||||||
|
else if (descriptor instanceof PropertyDescriptor) {
|
||||||
return 3;
|
return 3;
|
||||||
} else if (descriptor instanceof FunctionDescriptor) {
|
}
|
||||||
|
else if (descriptor instanceof FunctionDescriptor) {
|
||||||
FunctionDescriptor fun = (FunctionDescriptor)descriptor;
|
FunctionDescriptor fun = (FunctionDescriptor)descriptor;
|
||||||
if (fun.getReceiverParameter() == ReceiverDescriptor.NO_RECEIVER) {
|
if (fun.getReceiverParameter() == ReceiverDescriptor.NO_RECEIVER) {
|
||||||
return 2;
|
return 2;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,7 +96,8 @@ class DecompiledDataFactory {
|
|||||||
myBuilder.append("\n");
|
myBuilder.append("\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
ClassDescriptor cd = myJavaDescriptorResolver.resolveClass(new FqName(psiClass.getQualifiedName()), DescriptorSearchRule.INCLUDE_KOTLIN);
|
ClassDescriptor cd = myJavaDescriptorResolver.resolveClass(new FqName(psiClass.getQualifiedName()), DescriptorSearchRule.INCLUDE_KOTLIN);
|
||||||
if (cd != null) {
|
if (cd != null) {
|
||||||
appendDescriptor(cd, "");
|
appendDescriptor(cd, "");
|
||||||
@@ -135,13 +136,15 @@ class DecompiledDataFactory {
|
|||||||
if (descriptor instanceof FunctionDescriptor) {
|
if (descriptor instanceof FunctionDescriptor) {
|
||||||
myBuilder.append(" { ").append(DECOMPILED_COMMENT).append(" }");
|
myBuilder.append(" { ").append(DECOMPILED_COMMENT).append(" }");
|
||||||
endOffset = myBuilder.length();
|
endOffset = myBuilder.length();
|
||||||
} else { // descriptor instanceof PropertyDescriptor
|
}
|
||||||
|
else { // descriptor instanceof PropertyDescriptor
|
||||||
if (((PropertyDescriptor) descriptor).getModality() != Modality.ABSTRACT) {
|
if (((PropertyDescriptor) descriptor).getModality() != Modality.ABSTRACT) {
|
||||||
myBuilder.append(" ").append(DECOMPILED_COMMENT);
|
myBuilder.append(" ").append(DECOMPILED_COMMENT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (descriptor instanceof ClassDescriptor) {
|
}
|
||||||
|
else if (descriptor instanceof ClassDescriptor) {
|
||||||
myBuilder.append(" {\n");
|
myBuilder.append(" {\n");
|
||||||
ClassDescriptor classDescriptor = (ClassDescriptor) descriptor;
|
ClassDescriptor classDescriptor = (ClassDescriptor) descriptor;
|
||||||
boolean firstPassed = false;
|
boolean firstPassed = false;
|
||||||
@@ -161,7 +164,8 @@ class DecompiledDataFactory {
|
|||||||
|
|
||||||
if (firstPassed) {
|
if (firstPassed) {
|
||||||
myBuilder.append("\n");
|
myBuilder.append("\n");
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
firstPassed = true;
|
firstPassed = true;
|
||||||
}
|
}
|
||||||
myBuilder.append(subindent);
|
myBuilder.append(subindent);
|
||||||
|
|||||||
@@ -163,7 +163,8 @@ public class JetSourceNavigationHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
// extension property
|
// extension property
|
||||||
String expectedTypeString = receiverType.getText();
|
String expectedTypeString = receiverType.getText();
|
||||||
for (Descr candidate : matcher.getCandidatesFromScope(namespaceDescriptor.getMemberScope(), entityName)) {
|
for (Descr candidate : matcher.getCandidatesFromScope(namespaceDescriptor.getMemberScope(), entityName)) {
|
||||||
|
|||||||
@@ -62,7 +62,8 @@ public abstract class JetTemplateContextType extends TemplateContextType {
|
|||||||
if (qualifiedExpression != null && qualifiedExpression.getSelectorExpression() == parentOfParent) {
|
if (qualifiedExpression != null && qualifiedExpression.getSelectorExpression() == parentOfParent) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-6
@@ -207,7 +207,8 @@ public class JetFunctionParameterInfoHandler implements
|
|||||||
JetSimpleNameExpression refExpression = null;
|
JetSimpleNameExpression refExpression = null;
|
||||||
if (calleeExpression instanceof JetSimpleNameExpression) {
|
if (calleeExpression instanceof JetSimpleNameExpression) {
|
||||||
refExpression = (JetSimpleNameExpression) calleeExpression;
|
refExpression = (JetSimpleNameExpression) calleeExpression;
|
||||||
} else if (calleeExpression instanceof JetConstructorCalleeExpression) {
|
}
|
||||||
|
else if (calleeExpression instanceof JetConstructorCalleeExpression) {
|
||||||
JetConstructorCalleeExpression constructorCalleeExpression = (JetConstructorCalleeExpression) calleeExpression;
|
JetConstructorCalleeExpression constructorCalleeExpression = (JetConstructorCalleeExpression) calleeExpression;
|
||||||
if (constructorCalleeExpression.getConstructorReferenceExpression() instanceof JetSimpleNameExpression) {
|
if (constructorCalleeExpression.getConstructorReferenceExpression() instanceof JetSimpleNameExpression) {
|
||||||
refExpression = (JetSimpleNameExpression) constructorCalleeExpression.getConstructorReferenceExpression();
|
refExpression = (JetSimpleNameExpression) constructorCalleeExpression.getConstructorReferenceExpression();
|
||||||
@@ -244,7 +245,8 @@ public class JetFunctionParameterInfoHandler implements
|
|||||||
JetValueArgument argument = valueArguments.get(i);
|
JetValueArgument argument = valueArguments.get(i);
|
||||||
if (argument.isNamed()) {
|
if (argument.isNamed()) {
|
||||||
namedMode = true;
|
namedMode = true;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
ValueParameterDescriptor param = valueParameters.get(i);
|
ValueParameterDescriptor param = valueParameters.get(i);
|
||||||
builder.append(renderParameter(param, false, bindingContext));
|
builder.append(renderParameter(param, false, bindingContext));
|
||||||
if (i < currentParameterIndex) {
|
if (i < currentParameterIndex) {
|
||||||
@@ -258,7 +260,8 @@ public class JetFunctionParameterInfoHandler implements
|
|||||||
}
|
}
|
||||||
usedIndexes[i] = true;
|
usedIndexes[i] = true;
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
ValueParameterDescriptor param = valueParameters.get(i);
|
ValueParameterDescriptor param = valueParameters.get(i);
|
||||||
builder.append(renderParameter(param, false, bindingContext));
|
builder.append(renderParameter(param, false, bindingContext));
|
||||||
}
|
}
|
||||||
@@ -309,7 +312,8 @@ public class JetFunctionParameterInfoHandler implements
|
|||||||
if (builder.toString().isEmpty()) context.setUIComponentEnabled(false);
|
if (builder.toString().isEmpty()) context.setUIComponentEnabled(false);
|
||||||
else context.setupUIComponentPresentation(builder.toString(), boldStartOffset, boldEndOffset, isGrey,
|
else context.setupUIComponentPresentation(builder.toString(), boldStartOffset, boldEndOffset, isGrey,
|
||||||
isDeprecated, false, color);
|
isDeprecated, false, color);
|
||||||
} else context.setUIComponentEnabled(false);
|
}
|
||||||
|
else context.setUIComponentEnabled(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -336,7 +340,8 @@ public class JetFunctionParameterInfoHandler implements
|
|||||||
JetSimpleNameExpression refExpression = null;
|
JetSimpleNameExpression refExpression = null;
|
||||||
if (calleeExpression instanceof JetSimpleNameExpression) {
|
if (calleeExpression instanceof JetSimpleNameExpression) {
|
||||||
refExpression = (JetSimpleNameExpression) calleeExpression;
|
refExpression = (JetSimpleNameExpression) calleeExpression;
|
||||||
} else if (calleeExpression instanceof JetConstructorCalleeExpression) {
|
}
|
||||||
|
else if (calleeExpression instanceof JetConstructorCalleeExpression) {
|
||||||
JetConstructorCalleeExpression constructorCalleeExpression = (JetConstructorCalleeExpression) calleeExpression;
|
JetConstructorCalleeExpression constructorCalleeExpression = (JetConstructorCalleeExpression) calleeExpression;
|
||||||
if (constructorCalleeExpression.getConstructorReferenceExpression() instanceof JetSimpleNameExpression) {
|
if (constructorCalleeExpression.getConstructorReferenceExpression() instanceof JetSimpleNameExpression) {
|
||||||
refExpression = (JetSimpleNameExpression) constructorCalleeExpression.getConstructorReferenceExpression();
|
refExpression = (JetSimpleNameExpression) constructorCalleeExpression.getConstructorReferenceExpression();
|
||||||
@@ -361,7 +366,8 @@ public class JetFunctionParameterInfoHandler implements
|
|||||||
if (placeDescriptor != null && !JetVisibilityChecker.isVisible(placeDescriptor, functionDescriptor)) continue;
|
if (placeDescriptor != null && !JetVisibilityChecker.isVisible(placeDescriptor, functionDescriptor)) continue;
|
||||||
itemsToShow.add(functionDescriptor);
|
itemsToShow.add(functionDescriptor);
|
||||||
}
|
}
|
||||||
} else if (variant instanceof ClassDescriptor) {
|
}
|
||||||
|
else if (variant instanceof ClassDescriptor) {
|
||||||
ClassDescriptor classDescriptor = (ClassDescriptor) variant;
|
ClassDescriptor classDescriptor = (ClassDescriptor) variant;
|
||||||
if (classDescriptor.getName().equals(refName)) {
|
if (classDescriptor.getName().equals(refName)) {
|
||||||
//todo: renamed classes?
|
//todo: renamed classes?
|
||||||
|
|||||||
@@ -68,7 +68,8 @@ public class JetDeclarationTreeNode extends AbstractPsiBasedNode<JetDeclaration>
|
|||||||
text = "<class initializer>";
|
text = "<class initializer>";
|
||||||
}
|
}
|
||||||
data.setPresentableText(text);
|
data.setPresentableText(text);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
String text = declaration.getName();
|
String text = declaration.getName();
|
||||||
if (declaration instanceof JetClassInitializer) {
|
if (declaration instanceof JetClassInitializer) {
|
||||||
text = "<class initializer>";
|
text = "<class initializer>";
|
||||||
|
|||||||
@@ -50,7 +50,8 @@ public class JetFileTreeNode extends PsiFileNode {
|
|||||||
for (JetDeclaration declaration : declarations) {
|
for (JetDeclaration declaration : declarations) {
|
||||||
if (declaration instanceof JetClassOrObject) {
|
if (declaration instanceof JetClassOrObject) {
|
||||||
result.add(new JetClassOrObjectTreeNode(file.getProject(), (JetClassOrObject) declaration, getSettings()));
|
result.add(new JetClassOrObjectTreeNode(file.getProject(), (JetClassOrObject) declaration, getSettings()));
|
||||||
} else if (getSettings().isShowMembers()) {
|
}
|
||||||
|
else if (getSettings().isShowMembers()) {
|
||||||
result.add(new JetDeclarationTreeNode(getProject(), declaration, getSettings()));
|
result.add(new JetDeclarationTreeNode(getProject(), declaration, getSettings()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,10 +68,12 @@ public class JetProjectViewProvider implements SelectableTreeStructureProvider,
|
|||||||
if (classDeclarations.size() == 1 && (!settings.isShowMembers() || declarations.size() == 1) &&
|
if (classDeclarations.size() == 1 && (!settings.isShowMembers() || declarations.size() == 1) &&
|
||||||
nameWithoutExtension.equals(classDeclarations.get(0).getName())) {
|
nameWithoutExtension.equals(classDeclarations.get(0).getName())) {
|
||||||
result.add(new JetClassOrObjectTreeNode(file.getProject(), classDeclarations.get(0), settings));
|
result.add(new JetClassOrObjectTreeNode(file.getProject(), classDeclarations.get(0), settings));
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
result.add(new JetFileTreeNode(file.getProject(), file, settings));
|
result.add(new JetFileTreeNode(file.getProject(), file, settings));
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
result.add(child);
|
result.add(child);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -117,13 +119,17 @@ public class JetProjectViewProvider implements SelectableTreeStructureProvider,
|
|||||||
PsiElement parent = element.getParent();
|
PsiElement parent = element.getParent();
|
||||||
if (parent instanceof JetFile) {
|
if (parent instanceof JetFile) {
|
||||||
return true;
|
return true;
|
||||||
} else if (parent instanceof JetClassBody) {
|
}
|
||||||
|
else if (parent instanceof JetClassBody) {
|
||||||
parent = parent.getParent();
|
parent = parent.getParent();
|
||||||
if (parent instanceof JetClassOrObject) {
|
if (parent instanceof JetClassOrObject) {
|
||||||
return isSelectable(parent);
|
return isSelectable(parent);
|
||||||
} else return false;
|
}
|
||||||
} else return false;
|
else return false;
|
||||||
} else return false;
|
}
|
||||||
|
else return false;
|
||||||
|
}
|
||||||
|
else return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean fileInRoots(VirtualFile file) {
|
private boolean fileInRoots(VirtualFile file) {
|
||||||
|
|||||||
@@ -86,55 +86,75 @@ public class JetNameSuggester {
|
|||||||
if (ErrorUtils.containsErrorType(jetType)) return;
|
if (ErrorUtils.containsErrorType(jetType)) return;
|
||||||
if (typeChecker.equalTypes(standardLibrary.getBooleanType(), jetType)) {
|
if (typeChecker.equalTypes(standardLibrary.getBooleanType(), jetType)) {
|
||||||
addName(result, "b", validator);
|
addName(result, "b", validator);
|
||||||
} else if (typeChecker.equalTypes(standardLibrary.getIntType(), jetType)) {
|
}
|
||||||
|
else if (typeChecker.equalTypes(standardLibrary.getIntType(), jetType)) {
|
||||||
addName(result, "i", validator);
|
addName(result, "i", validator);
|
||||||
} else if (typeChecker.equalTypes(standardLibrary.getByteType(), jetType)) {
|
}
|
||||||
|
else if (typeChecker.equalTypes(standardLibrary.getByteType(), jetType)) {
|
||||||
addName(result, "byte", validator);
|
addName(result, "byte", validator);
|
||||||
} else if (typeChecker.equalTypes(standardLibrary.getLongType(), jetType)) {
|
}
|
||||||
|
else if (typeChecker.equalTypes(standardLibrary.getLongType(), jetType)) {
|
||||||
addName(result, "l", validator);
|
addName(result, "l", validator);
|
||||||
} else if (typeChecker.equalTypes(standardLibrary.getFloatType(), jetType)) {
|
}
|
||||||
|
else if (typeChecker.equalTypes(standardLibrary.getFloatType(), jetType)) {
|
||||||
addName(result, "fl", validator);
|
addName(result, "fl", validator);
|
||||||
} else if (typeChecker.equalTypes(standardLibrary.getDoubleType(), jetType)) {
|
}
|
||||||
|
else if (typeChecker.equalTypes(standardLibrary.getDoubleType(), jetType)) {
|
||||||
addName(result, "d", validator);
|
addName(result, "d", validator);
|
||||||
} else if (typeChecker.equalTypes(standardLibrary.getShortType(), jetType)) {
|
}
|
||||||
|
else if (typeChecker.equalTypes(standardLibrary.getShortType(), jetType)) {
|
||||||
addName(result, "sh", validator);
|
addName(result, "sh", validator);
|
||||||
} else if (typeChecker.equalTypes(standardLibrary.getCharType(), jetType)) {
|
}
|
||||||
|
else if (typeChecker.equalTypes(standardLibrary.getCharType(), jetType)) {
|
||||||
addName(result, "c", validator);
|
addName(result, "c", validator);
|
||||||
} else if (typeChecker.equalTypes(standardLibrary.getStringType(), jetType)) {
|
}
|
||||||
|
else if (typeChecker.equalTypes(standardLibrary.getStringType(), jetType)) {
|
||||||
addName(result, "s", validator);
|
addName(result, "s", validator);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
if (jetType.getArguments().size() == 1) {
|
if (jetType.getArguments().size() == 1) {
|
||||||
JetType argument = jetType.getArguments().get(0).getType();
|
JetType argument = jetType.getArguments().get(0).getType();
|
||||||
if (typeChecker.equalTypes(standardLibrary.getArrayType(argument), jetType)) {
|
if (typeChecker.equalTypes(standardLibrary.getArrayType(argument), jetType)) {
|
||||||
if (typeChecker.equalTypes(standardLibrary.getBooleanType(), argument)) {
|
if (typeChecker.equalTypes(standardLibrary.getBooleanType(), argument)) {
|
||||||
addName(result, "booleans", validator);
|
addName(result, "booleans", validator);
|
||||||
} else if (typeChecker.equalTypes(standardLibrary.getIntType(), argument)) {
|
}
|
||||||
|
else if (typeChecker.equalTypes(standardLibrary.getIntType(), argument)) {
|
||||||
addName(result, "ints", validator);
|
addName(result, "ints", validator);
|
||||||
} else if (typeChecker.equalTypes(standardLibrary.getByteType(), argument)) {
|
}
|
||||||
|
else if (typeChecker.equalTypes(standardLibrary.getByteType(), argument)) {
|
||||||
addName(result, "bytes", validator);
|
addName(result, "bytes", validator);
|
||||||
} else if (typeChecker.equalTypes(standardLibrary.getLongType(), argument)) {
|
}
|
||||||
|
else if (typeChecker.equalTypes(standardLibrary.getLongType(), argument)) {
|
||||||
addName(result, "longs", validator);
|
addName(result, "longs", validator);
|
||||||
} else if (typeChecker.equalTypes(standardLibrary.getFloatType(), argument)) {
|
}
|
||||||
|
else if (typeChecker.equalTypes(standardLibrary.getFloatType(), argument)) {
|
||||||
addName(result, "floats", validator);
|
addName(result, "floats", validator);
|
||||||
} else if (typeChecker.equalTypes(standardLibrary.getDoubleType(), argument)) {
|
}
|
||||||
|
else if (typeChecker.equalTypes(standardLibrary.getDoubleType(), argument)) {
|
||||||
addName(result, "doubles", validator);
|
addName(result, "doubles", validator);
|
||||||
} else if (typeChecker.equalTypes(standardLibrary.getShortType(), argument)) {
|
}
|
||||||
|
else if (typeChecker.equalTypes(standardLibrary.getShortType(), argument)) {
|
||||||
addName(result, "shorts", validator);
|
addName(result, "shorts", validator);
|
||||||
} else if (typeChecker.equalTypes(standardLibrary.getCharType(), argument)) {
|
}
|
||||||
|
else if (typeChecker.equalTypes(standardLibrary.getCharType(), argument)) {
|
||||||
addName(result, "chars", validator);
|
addName(result, "chars", validator);
|
||||||
} else if (typeChecker.equalTypes(standardLibrary.getStringType(), argument)) {
|
}
|
||||||
|
else if (typeChecker.equalTypes(standardLibrary.getStringType(), argument)) {
|
||||||
addName(result, "strings", validator);
|
addName(result, "strings", validator);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
ClassDescriptor classDescriptor = TypeUtils.getClassDescriptor(argument);
|
ClassDescriptor classDescriptor = TypeUtils.getClassDescriptor(argument);
|
||||||
if (classDescriptor != null) {
|
if (classDescriptor != null) {
|
||||||
String className = classDescriptor.getName();
|
String className = classDescriptor.getName();
|
||||||
addName(result, "arrayOf" + StringUtil.capitalize(className) + "s", validator);
|
addName(result, "arrayOf" + StringUtil.capitalize(className) + "s", validator);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
addForClassType(result, jetType, validator);
|
addForClassType(result, jetType, validator);
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
addForClassType(result, jetType, validator);
|
addForClassType(result, jetType, validator);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -158,7 +178,8 @@ public class JetNameSuggester {
|
|||||||
for (int i = 0; i < s.length(); ++i) {
|
for (int i = 0; i < s.length(); ++i) {
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
addName(result, StringUtil.decapitalize(s), validator);
|
addName(result, StringUtil.decapitalize(s), validator);
|
||||||
} else if (s.charAt(i) >= 'A' && s.charAt(i) <= 'Z') {
|
}
|
||||||
|
else if (s.charAt(i) >= 'A' && s.charAt(i) <= 'Z') {
|
||||||
addName(result, StringUtil.decapitalize(s.substring(i)), validator);
|
addName(result, StringUtil.decapitalize(s.substring(i)), validator);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -184,16 +205,19 @@ public class JetNameSuggester {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (expression instanceof JetSimpleNameExpression) {
|
}
|
||||||
|
else if (expression instanceof JetSimpleNameExpression) {
|
||||||
JetSimpleNameExpression reference = (JetSimpleNameExpression) expression;
|
JetSimpleNameExpression reference = (JetSimpleNameExpression) expression;
|
||||||
String referenceName = reference.getReferencedName();
|
String referenceName = reference.getReferencedName();
|
||||||
if (referenceName == null) return;
|
if (referenceName == null) return;
|
||||||
if (referenceName.equals(referenceName.toUpperCase())) {
|
if (referenceName.equals(referenceName.toUpperCase())) {
|
||||||
addName(result, referenceName, validator);
|
addName(result, referenceName, validator);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
addCamelNames(result, referenceName, validator);
|
addCamelNames(result, referenceName, validator);
|
||||||
}
|
}
|
||||||
} else if (expression instanceof JetCallExpression) {
|
}
|
||||||
|
else if (expression instanceof JetCallExpression) {
|
||||||
JetCallExpression call = (JetCallExpression) expression;
|
JetCallExpression call = (JetCallExpression) expression;
|
||||||
addNamesForExpression(result, call.getCalleeExpression(), validator);
|
addNamesForExpression(result, call.getCalleeExpression(), validator);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,7 +72,8 @@ public class JetNameValidatorImpl implements JetNameValidator {
|
|||||||
PsiElement sibling;
|
PsiElement sibling;
|
||||||
if (myAnchor != null) {
|
if (myAnchor != null) {
|
||||||
sibling = myAnchor;
|
sibling = myAnchor;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
if (myContainer instanceof JetExpression) {
|
if (myContainer instanceof JetExpression) {
|
||||||
return checkElement(name, myContainer);
|
return checkElement(name, myContainer);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,8 @@ public class JetRefactoringSupportProvider extends RefactoringSupportProvider {
|
|||||||
if (element instanceof JetProperty) {
|
if (element instanceof JetProperty) {
|
||||||
JetProperty property = (JetProperty) element;
|
JetProperty property = (JetProperty) element;
|
||||||
if (property.isLocal()) return true;
|
if (property.isLocal()) return true;
|
||||||
} else if (element instanceof JetFunction) {
|
}
|
||||||
|
else if (element instanceof JetFunction) {
|
||||||
JetFunction function = (JetFunction) element;
|
JetFunction function = (JetFunction) element;
|
||||||
if (function.isLocal()) return true;
|
if (function.isLocal()) return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,7 +67,8 @@ public class JetRefactoringUtil {
|
|||||||
while (selectionStart < selectionEnd && Character.isSpaceChar(text.charAt(selectionStart))) ++selectionStart;
|
while (selectionStart < selectionEnd && Character.isSpaceChar(text.charAt(selectionStart))) ++selectionStart;
|
||||||
while (selectionStart < selectionEnd && Character.isSpaceChar(text.charAt(selectionEnd - 1))) --selectionEnd;
|
while (selectionStart < selectionEnd && Character.isSpaceChar(text.charAt(selectionEnd - 1))) --selectionEnd;
|
||||||
callback.run(findExpression(editor, file, selectionStart, selectionEnd));
|
callback.run(findExpression(editor, file, selectionStart, selectionEnd));
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
int offset = editor.getCaretModel().getOffset();
|
int offset = editor.getCaretModel().getOffset();
|
||||||
smartSelectExpression(editor, file, offset, callback);
|
smartSelectExpression(editor, file, offset, callback);
|
||||||
}
|
}
|
||||||
@@ -93,9 +94,11 @@ public class JetRefactoringUtil {
|
|||||||
if (qualifiedExpression.getReceiverExpression() != element) {
|
if (qualifiedExpression.getReceiverExpression() != element) {
|
||||||
addExpression = false;
|
addExpression = false;
|
||||||
}
|
}
|
||||||
} else if (element.getParent() instanceof JetCallElement) {
|
}
|
||||||
|
else if (element.getParent() instanceof JetCallElement) {
|
||||||
addExpression = false;
|
addExpression = false;
|
||||||
} else if (element.getParent() instanceof JetOperationExpression) {
|
}
|
||||||
|
else if (element.getParent() instanceof JetOperationExpression) {
|
||||||
JetOperationExpression operationExpression = (JetOperationExpression) element.getParent();
|
JetOperationExpression operationExpression = (JetOperationExpression) element.getParent();
|
||||||
if (operationExpression.getOperationReference() == element) {
|
if (operationExpression.getOperationReference() == element) {
|
||||||
addExpression = false;
|
addExpression = false;
|
||||||
@@ -183,9 +186,11 @@ public class JetRefactoringUtil {
|
|||||||
element.getTextRange().getEndOffset() != endOffset) {
|
element.getTextRange().getEndOffset() != endOffset) {
|
||||||
//todo: if it's infix expression => add (), then commit document then return new created expression
|
//todo: if it's infix expression => add (), then commit document then return new created expression
|
||||||
throw new IntroduceRefactoringException(JetRefactoringBundle.message("cannot.refactor.not.expression"));
|
throw new IntroduceRefactoringException(JetRefactoringBundle.message("cannot.refactor.not.expression"));
|
||||||
} else if (!(element instanceof JetExpression)) {
|
}
|
||||||
|
else if (!(element instanceof JetExpression)) {
|
||||||
throw new IntroduceRefactoringException(JetRefactoringBundle.message("cannot.refactor.not.expression"));
|
throw new IntroduceRefactoringException(JetRefactoringBundle.message("cannot.refactor.not.expression"));
|
||||||
} else if (element instanceof JetBlockExpression) {
|
}
|
||||||
|
else if (element instanceof JetBlockExpression) {
|
||||||
List<JetElement> statements = ((JetBlockExpression) element).getStatements();
|
List<JetElement> statements = ((JetBlockExpression) element).getStatements();
|
||||||
if (statements.size() == 1) {
|
if (statements.size() == 1) {
|
||||||
JetElement elem = statements.get(0);
|
JetElement elem = statements.get(0);
|
||||||
|
|||||||
@@ -44,7 +44,8 @@ public class JetCopyClassHandler extends CopyHandlerDelegateBase {
|
|||||||
if (element instanceof JetClassOrObject &&
|
if (element instanceof JetClassOrObject &&
|
||||||
JetMoveFilesOrDirectoriesHandler.isMovableClass((JetClassOrObject) element)) {
|
JetMoveFilesOrDirectoriesHandler.isMovableClass((JetClassOrObject) element)) {
|
||||||
return element.getContainingFile();
|
return element.getContainingFile();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return element;
|
return element;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -22,7 +22,8 @@ public class JetChangePropertyActions {
|
|||||||
ASTNode node;
|
ASTNode node;
|
||||||
if (isVariable) {
|
if (isVariable) {
|
||||||
node = JetPsiFactory.createVarNode(project);
|
node = JetPsiFactory.createVarNode(project);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
node = JetPsiFactory.createValNode(project);
|
node = JetPsiFactory.createValNode(project);
|
||||||
}
|
}
|
||||||
property.getValOrVarNode().getPsi().replace(node.getPsi());
|
property.getValOrVarNode().getPsi().replace(node.getPsi());
|
||||||
|
|||||||
+6
-3
@@ -97,7 +97,8 @@ public class JetInplaceVariableIntroducer extends InplaceVariableIntroducer<JetE
|
|||||||
PsiDocumentManager.getInstance(myProject).commitDocument(myEditor.getDocument());
|
PsiDocumentManager.getInstance(myProject).commitDocument(myEditor.getDocument());
|
||||||
if (myExprTypeCheckbox.isSelected()) {
|
if (myExprTypeCheckbox.isSelected()) {
|
||||||
JetChangePropertyActions.addTypeAnnotation(myProject, myProperty, myExprType);
|
JetChangePropertyActions.addTypeAnnotation(myProject, myProperty, myExprType);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
JetChangePropertyActions.removeTypeAnnotation(myProject, myProperty);
|
JetChangePropertyActions.removeTypeAnnotation(myProject, myProperty);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -132,13 +133,15 @@ public class JetInplaceVariableIntroducer extends InplaceVariableIntroducer<JetE
|
|||||||
protected void moveOffsetAfter(boolean success) {
|
protected void moveOffsetAfter(boolean success) {
|
||||||
if (!myReplaceOccurrence || myExprMarker == null) {
|
if (!myReplaceOccurrence || myExprMarker == null) {
|
||||||
myEditor.getCaretModel().moveToOffset(myProperty.getTextRange().getEndOffset());
|
myEditor.getCaretModel().moveToOffset(myProperty.getTextRange().getEndOffset());
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
int startOffset = myExprMarker.getStartOffset();
|
int startOffset = myExprMarker.getStartOffset();
|
||||||
PsiFile file = myProperty.getContainingFile();
|
PsiFile file = myProperty.getContainingFile();
|
||||||
PsiElement elementAt = file.findElementAt(startOffset);
|
PsiElement elementAt = file.findElementAt(startOffset);
|
||||||
if (elementAt != null) {
|
if (elementAt != null) {
|
||||||
myEditor.getCaretModel().moveToOffset(elementAt.getTextRange().getEndOffset());
|
myEditor.getCaretModel().moveToOffset(elementAt.getTextRange().getEndOffset());
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
myEditor.getCaretModel().moveToOffset(myExprMarker.getEndOffset());
|
myEditor.getCaretModel().moveToOffset(myExprMarker.getEndOffset());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -62,7 +62,8 @@ public class JetMoveFilesOrDirectoriesHandler extends MoveFilesOrDirectoriesHand
|
|||||||
for (PsiElement element : sourceElements) {
|
for (PsiElement element : sourceElements) {
|
||||||
if (element instanceof JetClassOrObject) {
|
if (element instanceof JetClassOrObject) {
|
||||||
result.add(element.getContainingFile());
|
result.add(element.getContainingFile());
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
result.add(element);
|
result.add(element);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,8 @@ public class StubIndexServiceImpl implements StubIndexService {
|
|||||||
if (!stub.isExtension()) {
|
if (!stub.isExtension()) {
|
||||||
sink.occurrence(JetIndexKeys.TOP_LEVEL_FUNCTION_SHORT_NAME_KEY, name);
|
sink.occurrence(JetIndexKeys.TOP_LEVEL_FUNCTION_SHORT_NAME_KEY, name);
|
||||||
// sink.occurrence(JetIndexKeys.TOP_LEVEL_FUNCTION_FQNAME_KEY, name);
|
// sink.occurrence(JetIndexKeys.TOP_LEVEL_FUNCTION_FQNAME_KEY, name);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
sink.occurrence(JetIndexKeys.EXTENSION_FUNCTION_SHORT_NAME_KEY, name);
|
sink.occurrence(JetIndexKeys.EXTENSION_FUNCTION_SHORT_NAME_KEY, name);
|
||||||
// sink.occurrence(JetIndexKeys.EXTENSION_FUNCTION_FQNAME_KEY, name);
|
// sink.occurrence(JetIndexKeys.EXTENSION_FUNCTION_FQNAME_KEY, name);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -95,7 +95,8 @@ public class JetFunctionParameterInfoTest extends LightCodeInsightFixtureTestCas
|
|||||||
if (lastChild.getNode().getElementType().equals(JetTokens.BLOCK_COMMENT)) {
|
if (lastChild.getNode().getElementType().equals(JetTokens.BLOCK_COMMENT)) {
|
||||||
String lastChildText = lastChild.getText();
|
String lastChildText = lastChild.getText();
|
||||||
expectedResultText = lastChildText.substring(2, lastChildText.length() - 2).trim();
|
expectedResultText = lastChildText.substring(2, lastChildText.length() - 2).trim();
|
||||||
} else if (lastChild.getNode().getElementType().equals(JetTokens.EOL_COMMENT)) {
|
}
|
||||||
|
else if (lastChild.getNode().getElementType().equals(JetTokens.EOL_COMMENT)) {
|
||||||
expectedResultText = lastChild.getText().substring(2).trim();
|
expectedResultText = lastChild.getText().substring(2).trim();
|
||||||
}
|
}
|
||||||
assert expectedResultText != null;
|
assert expectedResultText != null;
|
||||||
|
|||||||
+2
-1
@@ -144,7 +144,8 @@ public class JetIntroduceVariableTest extends LightCodeInsightFixtureTestCase {
|
|||||||
if (lastChild.getNode().getElementType().equals(JetTokens.BLOCK_COMMENT)) {
|
if (lastChild.getNode().getElementType().equals(JetTokens.BLOCK_COMMENT)) {
|
||||||
String lastChildText = lastChild.getText();
|
String lastChildText = lastChild.getText();
|
||||||
expectedResultText = lastChildText.substring(2, lastChildText.length() - 2).trim();
|
expectedResultText = lastChildText.substring(2, lastChildText.length() - 2).trim();
|
||||||
} else if (lastChild.getNode().getElementType().equals(JetTokens.EOL_COMMENT)) {
|
}
|
||||||
|
else if (lastChild.getNode().getElementType().equals(JetTokens.EOL_COMMENT)) {
|
||||||
expectedResultText = lastChild.getText().substring(2).trim();
|
expectedResultText = lastChild.getText().substring(2).trim();
|
||||||
}
|
}
|
||||||
assert expectedResultText != null;
|
assert expectedResultText != null;
|
||||||
|
|||||||
+2
-1
@@ -82,7 +82,8 @@ public class JetNameSuggesterTest extends LightCodeInsightFixtureTestCase {
|
|||||||
if (lastChild.getNode().getElementType().equals(JetTokens.BLOCK_COMMENT)) {
|
if (lastChild.getNode().getElementType().equals(JetTokens.BLOCK_COMMENT)) {
|
||||||
String lastChildText = lastChild.getText();
|
String lastChildText = lastChild.getText();
|
||||||
expectedResultText = lastChildText.substring(2, lastChildText.length() - 2).trim();
|
expectedResultText = lastChildText.substring(2, lastChildText.length() - 2).trim();
|
||||||
} else if (lastChild.getNode().getElementType().equals(JetTokens.EOL_COMMENT)) {
|
}
|
||||||
|
else if (lastChild.getNode().getElementType().equals(JetTokens.EOL_COMMENT)) {
|
||||||
expectedResultText = lastChild.getText().substring(2).trim();
|
expectedResultText = lastChild.getText().substring(2).trim();
|
||||||
}
|
}
|
||||||
assert expectedResultText != null;
|
assert expectedResultText != null;
|
||||||
|
|||||||
@@ -147,7 +147,8 @@ class DiType {
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
if (typeParameters.size() > 0) {
|
if (typeParameters.size() > 0) {
|
||||||
return clazz + "<...>";
|
return clazz + "<...>";
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return clazz.toString();
|
return clazz.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -155,7 +155,8 @@ public class KDocMojo extends KotlinCompileMojoBase {
|
|||||||
getLog().info("title: " + title);
|
getLog().info("title: " + title);
|
||||||
getLog().info("sources: " + sources);
|
getLog().info("sources: " + sources);
|
||||||
getLog().info("API docs ignore packages: " + ignorePackages);
|
getLog().info("API docs ignore packages: " + ignorePackages);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
getLog().warn("No KDocArguments available!");
|
getLog().warn("No KDocArguments available!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -141,7 +141,8 @@ public abstract class KotlinCompileMojoBase extends AbstractMojo {
|
|||||||
if (module != null) {
|
if (module != null) {
|
||||||
log.info("Compiling Kotlin module " + module);
|
log.info("Compiling Kotlin module " + module);
|
||||||
arguments.setModule(module);
|
arguments.setModule(module);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
if (sources.size() <= 0)
|
if (sources.size() <= 0)
|
||||||
throw new MojoExecutionException("No source roots to compile");
|
throw new MojoExecutionException("No source roots to compile");
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -40,7 +40,8 @@ public class KotlinTestCompileMojo extends KotlinCompileMojoBase {
|
|||||||
public void execute() throws MojoExecutionException, MojoFailureException {
|
public void execute() throws MojoExecutionException, MojoFailureException {
|
||||||
if (skip) {
|
if (skip) {
|
||||||
getLog().info("Test compilation is skipped");
|
getLog().info("Test compilation is skipped");
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
super.execute();
|
super.execute();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,7 +46,8 @@ public class JetSignatureReader {
|
|||||||
while (pos < len) {
|
while (pos < len) {
|
||||||
pos = parseType(signature, pos + 1, v.visitExceptionType());
|
pos = parseType(signature, pos + 1, v.visitExceptionType());
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
pos = parseType(signature, pos, v.visitSuperclass());
|
pos = parseType(signature, pos, v.visitSuperclass());
|
||||||
while (pos < len) {
|
while (pos < len) {
|
||||||
pos = parseType(signature, pos, v.visitInterface());
|
pos = parseType(signature, pos, v.visitInterface());
|
||||||
@@ -74,10 +75,12 @@ public class JetSignatureReader {
|
|||||||
if (signature.substring(pos).startsWith("in ")) {
|
if (signature.substring(pos).startsWith("in ")) {
|
||||||
variance = TypeInfoVariance.IN;
|
variance = TypeInfoVariance.IN;
|
||||||
pos += "in ".length();
|
pos += "in ".length();
|
||||||
} else if (signature.substring(pos).startsWith("out ")) {
|
}
|
||||||
|
else if (signature.substring(pos).startsWith("out ")) {
|
||||||
variance = TypeInfoVariance.OUT;
|
variance = TypeInfoVariance.OUT;
|
||||||
pos += "out ".length();
|
pos += "out ".length();
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
variance = TypeInfoVariance.INVARIANT;
|
variance = TypeInfoVariance.INVARIANT;
|
||||||
pos += "".length();
|
pos += "".length();
|
||||||
}
|
}
|
||||||
@@ -105,7 +108,8 @@ public class JetSignatureReader {
|
|||||||
parameterVisitor.visitFormalTypeParameterEnd();
|
parameterVisitor.visitFormalTypeParameterEnd();
|
||||||
} while (c != '>');
|
} while (c != '>');
|
||||||
++pos;
|
++pos;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
pos = 0;
|
pos = 0;
|
||||||
}
|
}
|
||||||
return pos;
|
return pos;
|
||||||
@@ -185,7 +189,8 @@ public class JetSignatureReader {
|
|||||||
name = signature.substring(start, pos - 1);
|
name = signature.substring(start, pos - 1);
|
||||||
if (inner) {
|
if (inner) {
|
||||||
v.visitInnerClassType(name, nullable);
|
v.visitInnerClassType(name, nullable);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
v.visitClassType(name, nullable, forceReal);
|
v.visitClassType(name, nullable, forceReal);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -202,7 +207,8 @@ public class JetSignatureReader {
|
|||||||
name = signature.substring(start, pos - 1);
|
name = signature.substring(start, pos - 1);
|
||||||
if (inner) {
|
if (inner) {
|
||||||
v.visitInnerClassType(name, nullable);
|
v.visitInnerClassType(name, nullable);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
v.visitClassType(name, nullable, forceReal);
|
v.visitClassType(name, nullable, forceReal);
|
||||||
}
|
}
|
||||||
visited = true;
|
visited = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user