]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/annotations/AnnotationUtils.java
Showing compilation warnings in SCL issue view and editors
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / elaboration / expressions / annotations / AnnotationUtils.java
diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/annotations/AnnotationUtils.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/annotations/AnnotationUtils.java
new file mode 100644 (file)
index 0000000..fb7334c
--- /dev/null
@@ -0,0 +1,27 @@
+package org.simantics.scl.compiler.elaboration.expressions.annotations;
+
+import org.simantics.scl.compiler.constants.StringConstant;
+import org.simantics.scl.compiler.elaboration.expressions.ELiteral;
+import org.simantics.scl.compiler.elaboration.expressions.EStringLiteral;
+import org.simantics.scl.compiler.elaboration.expressions.EVar;
+import org.simantics.scl.compiler.elaboration.expressions.Expression;
+
+public class AnnotationUtils {
+    public static String extractString(Expression expression) {
+        if(expression instanceof EVar)
+            return ((EVar)expression).name;
+        else if(expression instanceof EStringLiteral) {
+            EStringLiteral literal = (EStringLiteral)expression;
+            if(literal.strings.length == 1)
+                return literal.strings[0];
+        }
+        else if(expression instanceof ELiteral) {
+            ELiteral literal = (ELiteral)expression;
+            if(literal.getValue() instanceof StringConstant) {
+                StringConstant constant = (StringConstant)literal.getValue();
+                return constant.getValue();
+            }
+        }
+        return null;
+    }
+}