Little fixes
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user