Little fixes

This commit is contained in:
svtk
2011-11-04 15:52:11 +04:00
parent d497fb1a5b
commit dfa3783f54
3 changed files with 20 additions and 10 deletions
@@ -26,12 +26,12 @@ public class ControlFlowAnalyzer {
private TopDownAnalysisContext context;
private ExpressionTypingServices typeInferrerServices;
private final JetControlFlowDataTraceFactory flowDataTraceFactory;
private final boolean isDeclaredLocally;
private final boolean analyzeLocalDeclaration;
public ControlFlowAnalyzer(TopDownAnalysisContext context, JetControlFlowDataTraceFactory flowDataTraceFactory, boolean declaredLocally) {
public ControlFlowAnalyzer(TopDownAnalysisContext context, JetControlFlowDataTraceFactory flowDataTraceFactory, boolean analyzeLocalDeclaration) {
this.context = context;
this.flowDataTraceFactory = flowDataTraceFactory;
isDeclaredLocally = declaredLocally;
this.analyzeLocalDeclaration = analyzeLocalDeclaration;
this.typeInferrerServices = context.getSemanticServices().getTypeInferrerServices(context.getTrace());
}
@@ -84,7 +84,7 @@ public class ControlFlowAnalyzer {
private void checkClassOrObject(JetClassOrObject klass, MutableClassDescriptor classDescriptor) {
JetFlowInformationProvider flowInformationProvider = new JetFlowInformationProvider((JetDeclaration) klass, (JetExpression) klass, flowDataTraceFactory, context.getTrace());
flowInformationProvider.markUninitializedVariables((JetElement) klass, true, isDeclaredLocally);
flowInformationProvider.markUninitializedVariables((JetElement) klass, true, analyzeLocalDeclaration);
}
private void checkFunction(JetDeclarationWithBody function, FunctionDescriptor functionDescriptor, final @NotNull JetType expectedReturnType) {
@@ -138,7 +138,7 @@ public class ControlFlowAnalyzer {
}
});
}
flowInformationProvider.markUninitializedVariables(function.asElement(), false, isDeclaredLocally);
flowInformationProvider.markUninitializedVariables(function.asElement(), false, analyzeLocalDeclaration);
if (((JetDeclaration) function).hasModifier(JetTokens.INLINE_KEYWORD)) {
//inline functions after M1
// flowInformationProvider.markNotOnlyInvokedFunctionVariables(function.asElement(), functionDescriptor.getValueParameters());
@@ -158,4 +158,9 @@ fun nullIsNotNothing() : Unit {
return
}
fail()
}
}
fun returnInWhile(a: Int) {
do {return}
while (<!UNREACHABLE_CODE!>1 > a<!>)
}
@@ -8,6 +8,7 @@ import com.intellij.psi.impl.source.codeStyle.CodeEditUtil;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.diagnostics.DiagnosticParameter;
import org.jetbrains.jet.lang.diagnostics.DiagnosticParameters;
import org.jetbrains.jet.lang.diagnostics.DiagnosticWithParameters;
import org.jetbrains.jet.lang.diagnostics.DiagnosticWithPsiElement;
@@ -18,6 +19,8 @@ import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
import org.jetbrains.jet.lexer.JetTokens;
import org.jetbrains.jet.plugin.JetBundle;
import java.util.Arrays;
/**
* @author svtk
*/
@@ -73,10 +76,12 @@ public class ChangeVariableMutabilityFix extends JetIntentionAction<JetProperty>
return new JetIntentionActionFactory<JetElement>() {
@Override
public JetIntentionAction<JetElement> createAction(DiagnosticWithPsiElement diagnostic) {
DiagnosticWithParameters<PsiElement> diagnosticWithParameters = assertAndCastToDiagnosticWithParameters(diagnostic, DiagnosticParameters.PROPERTY);
JetProperty property = diagnosticWithParameters.getParameter(DiagnosticParameters.PROPERTY);
if (diagnostic.getPsiElement().getContainingFile() == property.getContainingFile()) {
return (JetIntentionAction) new ChangeVariableMutabilityFix(property);
if (diagnostic instanceof DiagnosticWithParameters) {
DiagnosticWithParameters<PsiElement> diagnosticWithParameters = assertAndCastToDiagnosticWithParameters(diagnostic, DiagnosticParameters.PROPERTY);
JetProperty property = diagnosticWithParameters.getParameter(DiagnosticParameters.PROPERTY);
if (diagnostic.getPsiElement().getContainingFile() == property.getContainingFile()) {
return (JetIntentionAction) new ChangeVariableMutabilityFix(property);
}
}
return null;
}