Author: pkluegl
Date: Thu Jun 16 08:27:35 2016
New Revision: 1748664

URL: http://svn.apache.org/viewvc?rev=1748664&view=rev
Log:
UIMA-4977
- fixed FOREACH syntax check

Modified:
    
uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/validator/LanguageCheckerVisitor.java
    
uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/ScriptFactory.java

Modified: 
uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/validator/LanguageCheckerVisitor.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/validator/LanguageCheckerVisitor.java?rev=1748664&r1=1748663&r2=1748664&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/validator/LanguageCheckerVisitor.java
 (original)
+++ 
uima/ruta/trunk/ruta-ep-ide-ui/src/main/java/org/apache/uima/ruta/ide/validator/LanguageCheckerVisitor.java
 Thu Jun 16 08:27:35 2016
@@ -243,12 +243,6 @@ public class LanguageCheckerVisitor exte
       checkPackage(s);
       return false;
     }
-    if(s instanceof ForEachBlock) {
-      String name = ((ForEachBlock) s).getName();
-      Map<String, Integer> map = new HashMap<>();
-      map.put(name, RutaTypeConstants.RUTA_TYPE_UA);
-      knownLocalVariables.push(map);
-    }
     if (s instanceof RutaMacroDeclaration) {
       RutaMacroDeclaration decl = (RutaMacroDeclaration) s;
       Map<Token, Token> definition = decl.getDefinition();
@@ -639,9 +633,9 @@ public class LanguageCheckerVisitor exte
           return false;
         }
         Integer variableType = getVariableType(name);
-        if(variableType != null && variableType == 
RutaTypeConstants.RUTA_TYPE_AT
+        if(variableType != null && (variableType == 
RutaTypeConstants.RUTA_TYPE_AT
                 || variableType == RutaTypeConstants.RUTA_TYPE_UA
-                || variableType == RutaTypeConstants.RUTA_TYPE_UAL) {
+                || variableType == RutaTypeConstants.RUTA_TYPE_UAL)) {
           return false;
         }
         if (isFeatureMatch(name) != null) {
@@ -904,7 +898,7 @@ public class LanguageCheckerVisitor exte
     Integer variableType1 = getVariableType(aref);
     Integer variableType2 = getVariableType(bref);
     if (match == null && variableType1 != null && variableType2 != null && 
(variableType1 == RutaTypeConstants.RUTA_TYPE_AT
-            || variableType2 == RutaTypeConstants.RUTA_TYPE_AT)) {
+            || variableType2 == RutaTypeConstants.RUTA_TYPE_AT|| variableType1 
== RutaTypeConstants.RUTA_TYPE_UA)) {
       // do not check on variables!
       return;
     }
@@ -977,12 +971,15 @@ public class LanguageCheckerVisitor exte
   public boolean visit(MethodDeclaration s) throws Exception {
     if (s instanceof RutaBlock) {
       RutaBlock b = (RutaBlock) s;
-      knownLocalVariables.push(new HashMap<String, Integer>());
       String name = b.getName();
+      HashMap<String, Integer> map = new HashMap<String, Integer>();
+      if(b instanceof ForEachBlock) {
+        map.put(name, RutaTypeConstants.RUTA_TYPE_UA);
+      }
+      knownLocalVariables.push(map);
       blocks.push(name);
       // TODO add syntax check for block extensions
     }
-
     return true;
   }
 

Modified: 
uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/ScriptFactory.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/ScriptFactory.java?rev=1748664&r1=1748663&r2=1748664&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/ScriptFactory.java
 (original)
+++ 
uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/parser/ast/ScriptFactory.java
 Thu Jun 16 08:27:35 2016
@@ -200,8 +200,8 @@ public class ScriptFactory extends Abstr
    */
   public RutaBlock createScriptBlock(Token id, Token type, RutaBlock 
rutaBlock) {
     boolean forEach = false;
-    if (id != null) {
-      forEach = StringUtils.equals(id.getText(), 
RutaParser.tokenNames[RutaLexer.ForEachString]);
+    if (type != null) {
+      forEach = StringUtils.equals(type.getText(), "FOREACH");
     }
     int[] bounds = getBounds(type, id);
     int[] nameBounds = getBounds(id);


Reply via email to