X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Felaboration%2Fexpressions%2Fannotations%2FAnnotationUtils.java;h=08ea47297b7363bd8974c24154aa767b8e4d076b;hb=6320ecb3f75e3a29ed620ca5425ca22ef88a5496;hp=8cc088b955b8ded475ba86d150551f5a5f2ec44c;hpb=90b5d2ee1cfe82a75a097116f2f34ddb1cdff067;p=simantics%2Fplatform.git 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 index 8cc088b95..08ea47297 100644 --- 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 @@ -1,6 +1,11 @@ package org.simantics.scl.compiler.elaboration.expressions.annotations; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + import org.simantics.scl.compiler.constants.StringConstant; +import org.simantics.scl.compiler.elaboration.expressions.EListLiteral; import org.simantics.scl.compiler.elaboration.expressions.ELiteral; import org.simantics.scl.compiler.elaboration.expressions.EStringLiteral; import org.simantics.scl.compiler.elaboration.expressions.EVar; @@ -46,4 +51,21 @@ public class AnnotationUtils { } return null; } + + public static List extractIdentifierList(Expression expression) { + if(expression instanceof EVar || expression instanceof EStringLiteral || expression instanceof ELiteral) + return Collections.singletonList(new EVar(expression.location, extractString(expression))); + else if(expression instanceof EListLiteral) { + Expression[] components = ((EListLiteral)expression).getComponents(); + EVar[] items = new EVar[components.length]; + for(int i=0;i