From f7c76a0d4d19ce8a316437983ac1edfd7e0b718d Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Mon, 28 Mar 2011 21:00:14 +0400 Subject: [PATCH] Nullability of names --- .../jet/lang/resolve/ClassDescriptorResolver.java | 2 +- .../jetbrains/jet/lang/resolve/TopDownAnalyzer.java | 2 +- .../jet/lang/types/FunctionDescriptorImpl.java | 4 ++-- .../jetbrains/jet/lang/types/JetTypeInferrer.java | 12 ++++++++---- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/idea/src/org/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java b/idea/src/org/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java index c727a637df8..d67a460def7 100644 --- a/idea/src/org/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java +++ b/idea/src/org/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java @@ -154,7 +154,7 @@ public class ClassDescriptorResolver { FunctionDescriptorImpl functionDescriptor = new FunctionDescriptorImpl( containingDescriptor, AttributeResolver.INSTANCE.resolveAttributes(function.getModifierList()), - function.getName() + safeName(function.getName()) ); WritableScope parameterScope = semanticServices.createWritableScope(scope, functionDescriptor); diff --git a/idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java b/idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java index ebbfe03301c..81bdc0a9ca2 100644 --- a/idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java +++ b/idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java @@ -187,7 +187,7 @@ public class TopDownAnalyzer { @Override public void visitDeclaration(JetDeclaration dcl) { - throw new UnsupportedOperationException(dcl.getText() + " " + dcl.getClass().getCanonicalName()); // TODO + semanticServices.getErrorHandler().genericError(dcl.getNode(), "Unsupported declaration: " + dcl); // TODO } }); } diff --git a/idea/src/org/jetbrains/jet/lang/types/FunctionDescriptorImpl.java b/idea/src/org/jetbrains/jet/lang/types/FunctionDescriptorImpl.java index e3133c71c05..f2c25ea9f66 100644 --- a/idea/src/org/jetbrains/jet/lang/types/FunctionDescriptorImpl.java +++ b/idea/src/org/jetbrains/jet/lang/types/FunctionDescriptorImpl.java @@ -19,7 +19,7 @@ public class FunctionDescriptorImpl extends DeclarationDescriptorImpl implements public FunctionDescriptorImpl( @NotNull DeclarationDescriptor containingDeclaration, @NotNull List attributes, - String name) { + @NotNull String name) { super(containingDeclaration, attributes, name); this.original = this; } @@ -27,7 +27,7 @@ public class FunctionDescriptorImpl extends DeclarationDescriptorImpl implements public FunctionDescriptorImpl( @NotNull FunctionDescriptor original, @NotNull List attributes, - String name) { + @NotNull String name) { super(original.getContainingDeclaration(), attributes, name); this.original = original; } diff --git a/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java b/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java index ae738bdb9e9..9cab53c33ce 100644 --- a/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java +++ b/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java @@ -275,16 +275,18 @@ public class JetTypeInferrer { private JetType getBlockReturnedType(@NotNull JetScope outerScope, List block) { if (block.isEmpty()) { return JetStandardClasses.getUnitType(); - } else { - DeclarationDescriptor containingDescriptor = outerScope.getContainingDeclaration(); - WritableScope scope = semanticServices.createWritableScope(outerScope, containingDescriptor); - return getBlockReturnedTypeWithWritableScope(scope, block); } + + DeclarationDescriptor containingDescriptor = outerScope.getContainingDeclaration(); + WritableScope scope = semanticServices.createWritableScope(outerScope, containingDescriptor); + return getBlockReturnedTypeWithWritableScope(scope, block); } private JetType getBlockReturnedTypeWithWritableScope(@NotNull WritableScope scope, @NotNull List block) { assert !block.isEmpty(); + TypeInferrerVisitorWithWritableScope blockLevelVisitor = new TypeInferrerVisitorWithWritableScope(scope, true); + JetType result = null; for (JetElement statement : block) { result = blockLevelVisitor.getType((JetExpression) statement); @@ -345,6 +347,8 @@ public class JetTypeInferrer { result = null; } +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @Override public void visitSimpleNameExpression(JetSimpleNameExpression expression) { // TODO : other members