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:
Stepan Koltsov
2012-04-10 00:03:13 +04:00
parent 0d8088268a
commit a889e29147
91 changed files with 578 additions and 289 deletions
@@ -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();
} }
} }
@@ -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();
} }
} }
@@ -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;
} }
} }
@@ -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();
} }
} }
@@ -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;
} }
} }
@@ -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);
@@ -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);
} }
} }
@@ -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
} }
} }
@@ -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;
} }
} }
@@ -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,
@@ -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;
} }
@@ -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
@@ -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);
} }
} }
@@ -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)));
} }
@@ -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;
} }
} }
@@ -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;
} }
} }
@@ -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());
@@ -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());
} }
} }
@@ -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;
@@ -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;
@@ -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();
} }
} }
@@ -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!");
} }
@@ -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");
@@ -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;