Skip to content

Commit daeeab1

Browse files
committed
Added support for Association in the version inspection
1 parent 561e7d7 commit daeeab1

4 files changed

Lines changed: 35 additions & 0 deletions

File tree

src/de/halirutan/mathematica/codeinsight/inspections/bugs/UnsupportedVersion.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@
3636
import de.halirutan.mathematica.codeinsight.inspections.MathematicaInspectionBundle;
3737
import de.halirutan.mathematica.filetypes.MathematicaFileType;
3838
import de.halirutan.mathematica.parsing.psi.MathematicaVisitor;
39+
import de.halirutan.mathematica.parsing.psi.api.FunctionCall;
3940
import de.halirutan.mathematica.parsing.psi.api.Symbol;
41+
import de.halirutan.mathematica.parsing.psi.api.lists.Association;
4042
import de.halirutan.mathematica.sdk.MathematicaLanguageLevel;
4143
import de.halirutan.mathematica.sdk.MathematicaSdkType;
4244
import org.jetbrains.annotations.Nls;
@@ -187,6 +189,21 @@ private void registerProblem(final PsiElement element, final String message) {
187189
message);
188190
}
189191

192+
@Override
193+
public void visitFunctionCall(FunctionCall functionCall) {
194+
final PsiElement head = functionCall.getHead();
195+
if ("Association".equals(head.getText()) && myLanguageLevel.getVersionNumber() < 10 ) {
196+
registerProblem(functionCall, "Associations where introduced in version 10. You are using " + myLanguageLevel.getPresentableText());
197+
}
198+
}
199+
200+
@Override
201+
public void visitAssociation(Association association) {
202+
if (myLanguageLevel.getVersionNumber() < 10) {
203+
registerProblem(association, "Associations where introduced in version 10. You are using " + myLanguageLevel.getPresentableText());
204+
}
205+
}
206+
190207
@Override
191208
public void visitSymbol(Symbol symbol) {
192209
final String symbolName = symbol.getSymbolName();

src/de/halirutan/mathematica/parsing/psi/MathematicaVisitor.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import de.halirutan.mathematica.parsing.psi.api.comparison.ComparisonOperation;
2929
import de.halirutan.mathematica.parsing.psi.api.function.Function;
3030
import de.halirutan.mathematica.parsing.psi.api.graph.UndirectedEdge;
31+
import de.halirutan.mathematica.parsing.psi.api.lists.Association;
3132
import de.halirutan.mathematica.parsing.psi.api.lists.List;
3233
import de.halirutan.mathematica.parsing.psi.api.pattern.*;
3334
import de.halirutan.mathematica.parsing.psi.api.rules.ReplaceAll;
@@ -43,6 +44,10 @@
4344
*/
4445
public class MathematicaVisitor extends PsiElementVisitor {
4546

47+
public void visitAssociation(Association association) {
48+
visitElement(association);
49+
}
50+
4651
public void visitCompoundExpression(CompoundExpression compoundExpression) {
4752
visitElement(compoundExpression);
4853
}

src/de/halirutan/mathematica/parsing/psi/api/lists/Association.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import de.halirutan.mathematica.parsing.psi.api.Expression;
2525

2626
/**
27+
* Interface for Association
2728
* Created by rsmenon on 3/28/14.
2829
*/
2930
public interface Association extends Expression {

src/de/halirutan/mathematica/parsing/psi/impl/lists/AssociationImpl.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,27 @@
2222
package de.halirutan.mathematica.parsing.psi.impl.lists;
2323

2424
import com.intellij.lang.ASTNode;
25+
import com.intellij.psi.PsiElementVisitor;
26+
import de.halirutan.mathematica.parsing.psi.MathematicaVisitor;
2527
import de.halirutan.mathematica.parsing.psi.api.lists.Association;
2628
import de.halirutan.mathematica.parsing.psi.impl.ExpressionImpl;
2729
import org.jetbrains.annotations.NotNull;
2830

2931
/**
32+
* Implementation of Association
3033
* Created by rsmenon on 3/28/14.
3134
*/
3235
public class AssociationImpl extends ExpressionImpl implements Association {
3336
public AssociationImpl(@NotNull ASTNode node) {
3437
super(node);
3538
}
39+
40+
@Override
41+
public void accept(@NotNull PsiElementVisitor visitor) {
42+
if (visitor instanceof MathematicaVisitor) {
43+
((MathematicaVisitor) visitor).visitAssociation(this);
44+
} else {
45+
super.accept(visitor);
46+
}
47+
}
3648
}

0 commit comments

Comments
 (0)