diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java index 218256bf7c4..9faefde01d9 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java @@ -124,7 +124,10 @@ public class JetControlFlowProcessor { @Override public void visitDecomposerPattern(JetDecomposerPattern pattern) { value(pattern.getDecomposerExpression(), inCondition); - pattern.getArgumentList().accept(this); + JetTuplePattern argumentList = pattern.getArgumentList(); + if (argumentList != null) { + argumentList.accept(this); + } } @Override diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetDecomposerPattern.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetDecomposerPattern.java index ead61daf914..195cd30037a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetDecomposerPattern.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetDecomposerPattern.java @@ -18,6 +18,7 @@ public class JetDecomposerPattern extends JetPattern { return findChildByClass(JetExpression.class); } + @Nullable public JetTuplePattern getArgumentList() { return (JetTuplePattern) findChildByType(JetNodeTypes.DECOMPOSER_ARGUMENT_LIST); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/PatternMatchingTypingVisitor.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/PatternMatchingTypingVisitor.java index 245c1e8709f..c19b038fb98 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/PatternMatchingTypingVisitor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/PatternMatchingTypingVisitor.java @@ -204,9 +204,11 @@ public class PatternMatchingTypingVisitor extends ExpressionTypingVisitor { ReceiverDescriptor receiver = new TransientReceiver(subjectType); JetType selectorReturnType = facade.getSelectorReturnType(receiver, null, decomposerExpression, context); - result.set(checkPatternType(pattern.getArgumentList(), selectorReturnType == null + if (pattern.getArgumentList() != null) { + result.set(checkPatternType(pattern.getArgumentList(), selectorReturnType == null ? ErrorUtils.createErrorType("No type") : selectorReturnType, false, scopeToExtend, context)); + } } }