Introduced JetStandardClasses.UNIT_ALIAS constant, got rid of hard-coding it in all code except for tests.

This commit is contained in:
Evgeny Gerashchenko
2012-05-15 12:40:01 +04:00
parent 151b3be99e
commit e294a8821f
6 changed files with 12 additions and 7 deletions
@@ -25,6 +25,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.resolve.FqName;
import org.jetbrains.jet.lang.resolve.ImportPath;
import org.jetbrains.jet.lang.types.lang.JetStandardClasses;
import org.jetbrains.jet.lexer.JetTokens;
import java.util.Collection;
@@ -307,7 +308,7 @@ public class JetPsiUtil {
return false;
}
return "Unit".equals(typeReference.getText());
return JetStandardClasses.UNIT_ALIAS.equals(typeReference.getText());
}
public static boolean isSafeCall(@NotNull Call call) {
@@ -746,7 +746,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
JetType result;
if (operationType == JetTokens.PLUSPLUS || operationType == JetTokens.MINUSMINUS) {
if (JetTypeChecker.INSTANCE.isSubtypeOf(returnType, JetStandardClasses.getUnitType())) {
result = ErrorUtils.createErrorType("Unit");
result = ErrorUtils.createErrorType(JetStandardClasses.UNIT_ALIAS);
context.trace.report(INC_DEC_SHOULD_NOT_RETURN_UNIT.on(operationSign));
}
else {
@@ -258,12 +258,14 @@ public class JetStandardClasses {
@NotNull
public static final JetScope STANDARD_CLASSES;
public static final String UNIT_ALIAS = "Unit";
static {
WritableScope writableScope = new WritableScopeImpl(JetScope.EMPTY, STANDARD_CLASSES_NAMESPACE, RedeclarationHandler.DO_NOTHING).setDebugName("JetStandardClasses.STANDARD_CLASSES");
writableScope.changeLockLevel(WritableScope.LockLevel.BOTH);
STANDARD_CLASSES = writableScope;
writableScope.addClassifierAlias("Unit", getTuple(0));
writableScope.addClassifierAlias(UNIT_ALIAS, getTuple(0));
Field[] declaredFields = JetStandardClasses.class.getDeclaredFields();
for (Field field : declaredFields) {
@@ -118,7 +118,7 @@ public class DescriptorRenderer implements Renderer<DeclarationDescriptor> {
return escape("[NULL]");
}
else if (JetStandardClasses.isUnit(type)) {
return escape("Unit" + (type.isNullable() ? "?" : ""));
return escape(JetStandardClasses.UNIT_ALIAS + (type.isNullable() ? "?" : ""));
}
else if (JetStandardClasses.isTupleType(type)) {
return escape(renderTupleType(type, shortNamesOnly));
@@ -87,7 +87,7 @@ public class StandardLibraryReferenceResolver extends AbstractProjectComponent {
assert tuple0 != null;
scope = new WritableScopeImpl(scope, jetNamespace, RedeclarationHandler.THROW_EXCEPTION).setDebugName("Builtin classes scope #2");
scope.changeLockLevel(WritableScope.LockLevel.BOTH);
scope.addClassifierAlias("Unit", tuple0);
scope.addClassifierAlias(JetStandardClasses.UNIT_ALIAS, tuple0);
jetNamespace.setMemberScope(scope);
TopDownAnalyzer.processStandardLibraryNamespace(myProject, context, scope, jetNamespace, getJetFiles("jet"));
@@ -136,7 +136,8 @@ public class StandardLibraryReferenceResolver extends AbstractProjectComponent {
}
String renderedOriginal = DescriptorRenderer.TEXT.render(originalDescriptor);
for (DeclarationDescriptor member : memberScope.getAllDescriptors()) {
if (renderedOriginal.equals(DescriptorRenderer.TEXT.render(member).replace(TUPLE0_FQ_NAME.getFqName(), "Unit"))) {
if (renderedOriginal.equals(DescriptorRenderer.TEXT.render(member).replace(TUPLE0_FQ_NAME.getFqName(),
JetStandardClasses.UNIT_ALIAS))) {
return member;
}
}
@@ -23,6 +23,7 @@ import org.jetbrains.jet.j2k.Converter;
import org.jetbrains.jet.j2k.J2KConverterFlags;
import org.jetbrains.jet.j2k.ast.*;
import org.jetbrains.jet.j2k.util.AstUtil;
import org.jetbrains.jet.lang.types.lang.JetStandardClasses;
import java.util.LinkedList;
import java.util.List;
@@ -61,7 +62,7 @@ public class TypeVisitor extends PsiTypeVisitor<Type> implements J2KVisitor {
final IdentifierImpl identifier = new IdentifierImpl(name);
if (name.equals("void")) {
myResult = new PrimitiveType(new IdentifierImpl("Unit"));
myResult = new PrimitiveType(new IdentifierImpl(JetStandardClasses.UNIT_ALIAS));
}
else if (Node.PRIMITIVE_TYPES.contains(name)) {
myResult = new PrimitiveType(new IdentifierImpl(AstUtil.upperFirstCharacter(name)));