rename
This commit is contained in:
@@ -174,7 +174,7 @@ public class ClassDescriptorResolver {
|
|||||||
} else {
|
} else {
|
||||||
if (bodyExpression == null) {
|
if (bodyExpression == null) {
|
||||||
semanticServices.getErrorHandler().genericError(function.getNode(), "This function must either declare a return type or have a body expression");
|
semanticServices.getErrorHandler().genericError(function.getNode(), "This function must either declare a return type or have a body expression");
|
||||||
returnType = ErrorType.createErrorType("No type, no body");
|
returnType = ErrorUtils.createErrorType("No type, no body");
|
||||||
} else {
|
} else {
|
||||||
// TODO : Recursion possible
|
// TODO : Recursion possible
|
||||||
returnType = semanticServices.getTypeInferrer(trace).safeGetType(parameterScope, bodyExpression, function.hasBlockBody());
|
returnType = semanticServices.getTypeInferrer(trace).safeGetType(parameterScope, bodyExpression, function.hasBlockBody());
|
||||||
@@ -204,7 +204,7 @@ public class ClassDescriptorResolver {
|
|||||||
JetType type;
|
JetType type;
|
||||||
if (typeReference == null) {
|
if (typeReference == null) {
|
||||||
semanticServices.getErrorHandler().genericError(valueParameter.getNode(), "A type annotation is required on a value parameter");
|
semanticServices.getErrorHandler().genericError(valueParameter.getNode(), "A type annotation is required on a value parameter");
|
||||||
type = ErrorType.createErrorType("Type annotation was missing");
|
type = ErrorUtils.createErrorType("Type annotation was missing");
|
||||||
} else {
|
} else {
|
||||||
type = typeResolver.resolveType(parameterScope, typeReference);
|
type = typeResolver.resolveType(parameterScope, typeReference);
|
||||||
}
|
}
|
||||||
@@ -266,7 +266,7 @@ public class ClassDescriptorResolver {
|
|||||||
result.add(typeResolver.resolveType(extensibleScope, typeReference));
|
result.add(typeResolver.resolveType(extensibleScope, typeReference));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
result.add(ErrorType.createErrorType("No type reference"));
|
result.add(ErrorUtils.createErrorType("No type reference"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
@@ -286,7 +286,7 @@ public class ClassDescriptorResolver {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Error is reported by the parser
|
// Error is reported by the parser
|
||||||
type = ErrorType.createErrorType("Annotation is absent");
|
type = ErrorUtils.createErrorType("Annotation is absent");
|
||||||
}
|
}
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
@@ -311,7 +311,7 @@ public class ClassDescriptorResolver {
|
|||||||
JetExpression initializer = property.getInitializer();
|
JetExpression initializer = property.getInitializer();
|
||||||
if (initializer == null) {
|
if (initializer == null) {
|
||||||
semanticServices.getErrorHandler().genericError(property.getNode(), "This property must either have a type annotation or be initialized");
|
semanticServices.getErrorHandler().genericError(property.getNode(), "This property must either have a type annotation or be initialized");
|
||||||
type = ErrorType.createErrorType("No type, no body");
|
type = ErrorUtils.createErrorType("No type, no body");
|
||||||
} else {
|
} else {
|
||||||
// TODO : ??? Fix-point here: what if we have something like "val a = foo {a.bar()}"
|
// TODO : ??? Fix-point here: what if we have something like "val a = foo {a.bar()}"
|
||||||
type = semanticServices.getTypeInferrer(trace).getType(scope, initializer, false);
|
type = semanticServices.getTypeInferrer(trace).getType(scope, initializer, false);
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ public class TypeResolver {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (result[0] == null) {
|
if (result[0] == null) {
|
||||||
return ErrorType.createErrorType(typeElement == null ? "No type element": typeElement.getText());
|
return ErrorUtils.createErrorType(typeElement == null ? "No type element" : typeElement.getText());
|
||||||
}
|
}
|
||||||
return result[0];
|
return result[0];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ public class JavaTypeTransformer {
|
|||||||
public JetType visitClassType(PsiClassType classType) {
|
public JetType visitClassType(PsiClassType classType) {
|
||||||
PsiClass psiClass = classType.resolveGenerics().getElement();
|
PsiClass psiClass = classType.resolveGenerics().getElement();
|
||||||
if (psiClass == null) {
|
if (psiClass == null) {
|
||||||
return ErrorType.createErrorType("Unresolved java class: " + classType.getPresentableText());
|
return ErrorUtils.createErrorType("Unresolved java class: " + classType.getPresentableText());
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("java.lang.Object".equals(psiClass.getQualifiedName())) {
|
if ("java.lang.Object".equals(psiClass.getQualifiedName())) {
|
||||||
|
|||||||
+2
-2
@@ -9,7 +9,7 @@ import java.util.*;
|
|||||||
/**
|
/**
|
||||||
* @author abreslav
|
* @author abreslav
|
||||||
*/
|
*/
|
||||||
public class ErrorType {
|
public class ErrorUtils {
|
||||||
|
|
||||||
private static final ModuleDescriptor ERROR_MODULE = new ModuleDescriptor("<ERROR MODULE>");
|
private static final ModuleDescriptor ERROR_MODULE = new ModuleDescriptor("<ERROR MODULE>");
|
||||||
private static final JetScope ERROR_SCOPE = new JetScope() {
|
private static final JetScope ERROR_SCOPE = new JetScope() {
|
||||||
@@ -188,5 +188,5 @@ public class ErrorType {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private ErrorType() {}
|
private ErrorUtils() {}
|
||||||
}
|
}
|
||||||
@@ -303,7 +303,7 @@ public class JetTypeChecker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSubtypeOf(@NotNull JetType subtype, @NotNull JetType supertype) {
|
public boolean isSubtypeOf(@NotNull JetType subtype, @NotNull JetType supertype) {
|
||||||
if (ErrorType.isErrorType(subtype) || ErrorType.isErrorType(supertype)) {
|
if (ErrorUtils.isErrorType(subtype) || ErrorUtils.isErrorType(supertype)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (!supertype.isNullable() && subtype.isNullable()) {
|
if (!supertype.isNullable() && subtype.isNullable()) {
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ public class JetTypeInferrer {
|
|||||||
if (type != null) {
|
if (type != null) {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
return ErrorType.createErrorType("Type for " + expression.getText());
|
return ErrorUtils.createErrorType("Type for " + expression.getText());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@@ -653,7 +653,7 @@ public class JetTypeInferrer {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (expectedParameterType == null) {
|
if (expectedParameterType == null) {
|
||||||
expectedParameterType = ErrorType.createErrorType("Error");
|
expectedParameterType = ErrorUtils.createErrorType("Error");
|
||||||
}
|
}
|
||||||
propertyDescriptor = classDescriptorResolver.resolveValueParameterDescriptor(scope.getContainingDeclaration(), loopParameter, expectedParameterType);
|
propertyDescriptor = classDescriptorResolver.resolveValueParameterDescriptor(scope.getContainingDeclaration(), loopParameter, expectedParameterType);
|
||||||
}
|
}
|
||||||
@@ -730,7 +730,7 @@ public class JetTypeInferrer {
|
|||||||
Collections.<JetTypeProjection>emptyList(),
|
Collections.<JetTypeProjection>emptyList(),
|
||||||
expression.getArguments(),
|
expression.getArguments(),
|
||||||
expression.getFunctionLiteralArguments());
|
expression.getFunctionLiteralArguments());
|
||||||
if (constructorReturnedType == null && !ErrorType.isErrorType(receiverType)) {
|
if (constructorReturnedType == null && !ErrorUtils.isErrorType(receiverType)) {
|
||||||
trace.recordReferenceResolution(referenceExpression, receiverType.getConstructor().getDeclarationDescriptor());
|
trace.recordReferenceResolution(referenceExpression, receiverType.getConstructor().getDeclarationDescriptor());
|
||||||
// TODO : more helpful message
|
// TODO : more helpful message
|
||||||
JetArgumentList argumentList = expression.getArgumentList();
|
JetArgumentList argumentList = expression.getArgumentList();
|
||||||
@@ -961,7 +961,7 @@ public class JetTypeInferrer {
|
|||||||
}
|
}
|
||||||
else if (inOperations.contains(operationType)) {
|
else if (inOperations.contains(operationType)) {
|
||||||
if (right == null) {
|
if (right == null) {
|
||||||
result = ErrorType.createErrorType("No right argument"); // TODO
|
result = ErrorUtils.createErrorType("No right argument"); // TODO
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String name = "contains";
|
String name = "contains";
|
||||||
@@ -1030,7 +1030,7 @@ public class JetTypeInferrer {
|
|||||||
|
|
||||||
private boolean isBoolean(@NotNull JetType type) {
|
private boolean isBoolean(@NotNull JetType type) {
|
||||||
TypeConstructor booleanTypeConstructor = semanticServices.getStandardLibrary().getBoolean().getTypeConstructor();
|
TypeConstructor booleanTypeConstructor = semanticServices.getStandardLibrary().getBoolean().getTypeConstructor();
|
||||||
return type.getConstructor().equals(booleanTypeConstructor) || ErrorType.isErrorType(type);
|
return type.getConstructor().equals(booleanTypeConstructor) || ErrorUtils.isErrorType(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1064,7 +1064,7 @@ public class JetTypeInferrer {
|
|||||||
private JetType getTypeForBinaryCall(JetScope scope, JetExpression left, JetSimpleNameExpression operationSign, @NotNull JetExpression right, String name, boolean reportUnresolved) {
|
private JetType getTypeForBinaryCall(JetScope scope, JetExpression left, JetSimpleNameExpression operationSign, @NotNull JetExpression right, String name, boolean reportUnresolved) {
|
||||||
JetType leftType = safeGetType(scope, left, false);
|
JetType leftType = safeGetType(scope, left, false);
|
||||||
JetType rightType = safeGetType(scope, right, false);
|
JetType rightType = safeGetType(scope, right, false);
|
||||||
if (ErrorType.isErrorType(leftType)) {
|
if (ErrorUtils.isErrorType(leftType)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
FunctionDescriptor functionDescriptor = lookupFunction(scope, operationSign, name, leftType, Collections.singletonList(rightType), reportUnresolved);
|
FunctionDescriptor functionDescriptor = lookupFunction(scope, operationSign, name, leftType, Collections.singletonList(rightType), reportUnresolved);
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ public class TypeSubstitutor {
|
|||||||
try {
|
try {
|
||||||
return unsafeSubstitute(substitutionContext, type, howThisTypeIsUsed);
|
return unsafeSubstitute(substitutionContext, type, howThisTypeIsUsed);
|
||||||
} catch (SubstitutionException e) {
|
} catch (SubstitutionException e) {
|
||||||
return ErrorType.createErrorType(e.getMessage());
|
return ErrorUtils.createErrorType(e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -450,7 +450,7 @@ public class JetTypeCheckerTest extends LightDaemonAnalyzerTestCase {
|
|||||||
Project project = getProject();
|
Project project = getProject();
|
||||||
JetExpression jetExpression = JetChangeUtil.createExpression(project, expression);
|
JetExpression jetExpression = JetChangeUtil.createExpression(project, expression);
|
||||||
JetType type = semanticServices.getTypeInferrer(BindingTrace.DUMMY).safeGetType(classDefinitions.BASIC_SCOPE, jetExpression, false);
|
JetType type = semanticServices.getTypeInferrer(BindingTrace.DUMMY).safeGetType(classDefinitions.BASIC_SCOPE, jetExpression, false);
|
||||||
assertTrue("Error type expected but " + type + " returned", ErrorType.isErrorType(type));
|
assertTrue("Error type expected but " + type + " returned", ErrorUtils.isErrorType(type));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertType(String contextType, String expression, String expectedType) {
|
private void assertType(String contextType, String expression, String expectedType) {
|
||||||
|
|||||||
Reference in New Issue
Block a user