NamespaceType → PackageType.

This commit is contained in:
Evgeny Gerashchenko
2014-01-09 23:29:49 +04:00
parent 1f615d08c7
commit 997d3597a9
13 changed files with 40 additions and 41 deletions
@@ -20,11 +20,11 @@ import org.jetbrains.jet.lang.psi.JetElement;
import org.jetbrains.jet.lang.resolve.name.SpecialNames;
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue;
import org.jetbrains.jet.lang.types.NamespaceType;
import org.jetbrains.jet.lang.types.PackageType;
public class JetModuleUtil {
public static NamespaceType getRootNamespaceType(JetElement expression) {
public static PackageType getRootPackageType(JetElement expression) {
// TODO: this is a stub: at least the modules' root namespaces must be indexed here
return new NamespaceType(SpecialNames.ROOT_NAMESPACE, JetScope.EMPTY, ReceiverValue.NO_RECEIVER);
return new PackageType(SpecialNames.ROOT_NAMESPACE, JetScope.EMPTY, ReceiverValue.NO_RECEIVER);
}
}
@@ -130,7 +130,7 @@ public class CallExpressionResolver {
p.println(toString(), " for ", classifier);
}
};
return new NamespaceType(referencedName, scopeForStaticMembersResolution, NO_RECEIVER);
return new PackageType(referencedName, scopeForStaticMembersResolution, NO_RECEIVER);
}
temporaryTrace.commit();
return result[0];
@@ -181,7 +181,7 @@ public class CallExpressionResolver {
JetScope scope = new ChainedScope(
classifier, "Member scope for extended class object type " + classifier, scopes.toArray(new JetScope[scopes.size()])
);
return new NamespaceType(referencedName, scope, new ExpressionReceiver(expression, classObjectType));
return new PackageType(referencedName, scope, new ExpressionReceiver(expression, classObjectType));
}
private boolean furtherNameLookup(
@@ -189,12 +189,12 @@ public class CallExpressionResolver {
@NotNull JetType[] result,
@NotNull ResolutionContext context
) {
NamespaceType namespaceType = lookupNamespaceType(expression, context);
if (namespaceType == null) {
PackageType packageType = lookupPackageType(expression, context);
if (packageType == null) {
return false;
}
if (isLHSOfDot(expression)) {
result[0] = namespaceType;
result[0] = packageType;
return true;
}
context.trace.report(EXPRESSION_EXPECTED_NAMESPACE_FOUND.on(expression));
@@ -203,26 +203,26 @@ public class CallExpressionResolver {
}
@Nullable
private NamespaceType lookupNamespaceType(@NotNull JetSimpleNameExpression expression, @NotNull ResolutionContext context) {
private PackageType lookupPackageType(@NotNull JetSimpleNameExpression expression, @NotNull ResolutionContext context) {
Name name = expression.getReferencedNameAsName();
PackageViewDescriptor namespace = context.scope.getPackage(name);
if (namespace == null) {
PackageViewDescriptor packageView = context.scope.getPackage(name);
if (packageView == null) {
return null;
}
context.trace.record(REFERENCE_TARGET, expression, namespace);
context.trace.record(REFERENCE_TARGET, expression, packageView);
// Construct a NamespaceType with everything from the namespace and with nested classes of the corresponding class (if any)
// Construct a PackageType with everything from the package and with nested classes of the corresponding class (if any)
JetScope scope;
ClassifierDescriptor classifier = context.scope.getClassifier(name);
if (classifier instanceof ClassDescriptor) {
scope = new ChainedScope(
namespace, "Namespace type member scope for " + expression.getText(), namespace.getMemberScope(), getStaticNestedClassesScope((ClassDescriptor) classifier)
packageView, "Package type member scope for " + expression.getText(), packageView.getMemberScope(), getStaticNestedClassesScope((ClassDescriptor) classifier)
);
}
else {
scope = namespace.getMemberScope();
scope = packageView.getMemberScope();
}
return new NamespaceType(name, scope, NO_RECEIVER);
return new PackageType(name, scope, NO_RECEIVER);
}
@Nullable
@@ -295,7 +295,7 @@ public class CallExpressionResolver {
JetType type = getVariableType(nameExpression, receiver, callOperationNode, context.replaceTraceAndCache(temporaryForVariable), result);
if (result[0]) {
temporaryForVariable.commit();
if (type instanceof NamespaceType && !isLHSOfDot(nameExpression)) {
if (type instanceof PackageType && !isLHSOfDot(nameExpression)) {
type = null;
}
return JetTypeInfo.create(type, context.dataFlowInfo);
@@ -452,7 +452,7 @@ public class CallExpressionResolver {
JetType selectorReturnType = selectorReturnTypeInfo.getType();
//TODO move further
if (!(receiverType instanceof NamespaceType) && expression.getOperationSign() == JetTokens.SAFE_ACCESS) {
if (!(receiverType instanceof PackageType) && expression.getOperationSign() == JetTokens.SAFE_ACCESS) {
if (selectorReturnType != null && !KotlinBuiltIns.getInstance().isUnit(selectorReturnType)) {
if (receiverType.isNullable()) {
selectorReturnType = TypeUtils.makeNullable(selectorReturnType);
@@ -156,7 +156,7 @@ public class DataFlowValueFactory {
return getIdForThisReceiver(declarationDescriptor);
}
else if (expression instanceof JetRootNamespaceExpression) {
return createPackageInfo(JetModuleUtil.getRootNamespaceType(expression));
return createPackageInfo(JetModuleUtil.getRootPackageType(expression));
}
return NO_IDENTIFIER_INFO;
}
@@ -35,7 +35,7 @@ import org.jetbrains.jet.lang.resolve.scopes.receivers.ExpressionReceiver;
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue;
import org.jetbrains.jet.lang.types.ErrorUtils;
import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.lang.types.NamespaceType;
import org.jetbrains.jet.lang.types.PackageType;
import org.jetbrains.jet.lang.types.checker.JetTypeChecker;
import java.util.ArrayList;
@@ -87,10 +87,10 @@ public class TaskPrioritizer {
List<Pair<JetScope, ReceiverValue>> variants = new ArrayList<Pair<JetScope, ReceiverValue>>(2);
ReceiverValue explicitReceiver = context.call.getExplicitReceiver();
if (explicitReceiver.exists() && explicitReceiver.getType() instanceof NamespaceType) {
if (explicitReceiver.exists() && explicitReceiver.getType() instanceof PackageType) {
JetType receiverType = explicitReceiver.getType();
variants.add(Pair.create(receiverType.getMemberScope(), NO_RECEIVER));
ReceiverValue value = ((NamespaceType) receiverType).getReceiverValue();
ReceiverValue value = ((PackageType) receiverType).getReceiverValue();
if (value.exists()) {
variants.add(Pair.create(context.scope, value));
}
@@ -1172,7 +1172,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
@Override
public JetTypeInfo visitRootNamespaceExpression(@NotNull JetRootNamespaceExpression expression, ExpressionTypingContext context) {
if (JetPsiUtil.isLHSOfDot(expression)) {
return DataFlowUtils.checkType(JetModuleUtil.getRootNamespaceType(expression), expression, context, context.dataFlowInfo);
return DataFlowUtils.checkType(JetModuleUtil.getRootPackageType(expression), expression, context, context.dataFlowInfo);
}
context.trace.report(NAMESPACE_IS_NOT_AN_EXPRESSION.on(expression));
return JetTypeInfo.create(null, context.dataFlowInfo);
@@ -22,7 +22,6 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Pair;
import com.intellij.psi.PsiElement;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.tree.TokenSet;
import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -259,7 +258,7 @@ public class ExpressionTypingUtils {
) {
JetType type = receiverArgument.getType();
if (type instanceof NamespaceType) {
if (type instanceof PackageType) {
// This fake class ruins standard algorithms
return false;
}