This is an automated email from the ASF dual-hosted git repository.

joshtynjala pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git

commit e18e4e7eff876a8ff9349d4c60ec837b4cfb1777
Author: Josh Tynjala <[email protected]>
AuthorDate: Thu Oct 21 13:23:59 2021 -0700

    formatter: ignore compiler problems that aren't errors
---
 .../org/apache/royale/formatter/FORMATTER.java     | 48 ++++++++++++++--------
 .../royale/formatter/TestThrowStatement.java       |  6 +--
 2 files changed, 34 insertions(+), 20 deletions(-)

diff --git a/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java 
b/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
index 9686eb0..8e632e1 100644
--- a/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
+++ b/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
@@ -33,6 +33,7 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.royale.compiler.clients.problems.CompilerProblemCategorizer;
 import org.apache.royale.compiler.clients.problems.ProblemFormatter;
 import org.apache.royale.compiler.clients.problems.ProblemPrinter;
 import org.apache.royale.compiler.clients.problems.ProblemQuery;
@@ -51,6 +52,7 @@ import 
org.apache.royale.compiler.internal.parsing.as.StreamingASTokenizer;
 import org.apache.royale.compiler.internal.tree.as.FileNode;
 import org.apache.royale.compiler.internal.workspaces.Workspace;
 import org.apache.royale.compiler.parsing.IASToken;
+import org.apache.royale.compiler.problems.CompilerProblemSeverity;
 import org.apache.royale.compiler.problems.ConfigurationProblem;
 import org.apache.royale.compiler.problems.ICompilerProblem;
 import org.apache.royale.compiler.problems.UnexpectedExceptionProblem;
@@ -396,7 +398,7 @@ public class FORMATTER {
                        String scriptTagText = scriptMatcher.group(1);
                        String scriptText = scriptMatcher.group(2);
                        String formattedScriptText = 
formatAS3TextInternal(filePath, scriptText, problems);
-                       if (problems.size() > 0) {
+                       if (!ignoreProblems && hasErrors(problems)) {
                                return text;
                        }
                        String[] formattedLines = 
formattedScriptText.split("\n");
@@ -431,6 +433,10 @@ public class FORMATTER {
        }
 
        private String formatAS3TextInternal(String filePath, String text, 
Collection<ICompilerProblem> problems) {
+               if(problems == null) {
+                       problems = new ArrayList<ICompilerProblem>();
+               }
+
                StringReader textReader = new StringReader(text);
                StreamingASTokenizer tokenizer = null;
                ASToken[] streamingTokens = null;
@@ -448,10 +454,11 @@ public class FORMATTER {
                        }
                }
 
-               if (!ignoreProblems && tokenizer.hasTokenizationProblems()) {
-                       if (problems != null) {
-                               
problems.addAll(tokenizer.getTokenizationProblems());
-                       }
+               if (tokenizer.hasTokenizationProblems()) {
+                       problems.addAll(tokenizer.getTokenizationProblems());
+               }
+
+               if(!ignoreProblems && hasErrors(problems)) {
                        return text;
                }
 
@@ -477,23 +484,19 @@ public class FORMATTER {
                        parser.file(node);
                } catch (Exception e) {
                        parser = null;
-                       if (problems != null) {
-                               problems.add(new UnexpectedExceptionProblem(e));
-                       }
+                       problems.add(new UnexpectedExceptionProblem(e));
                        return text;
                }
 
-               if (!ignoreProblems && tokenizer.hasTokenizationProblems()) {
-                       if (problems != null) {
-                               
problems.addAll(tokenizer.getTokenizationProblems());
-                       }
-                       return text;
+               if (tokenizer.hasTokenizationProblems()) {
+                       problems.addAll(tokenizer.getTokenizationProblems());
                }
 
-               if (!ignoreProblems && parser.getSyntaxProblems().size() > 0) {
-                       if (problems != null) {
-                               problems.addAll(parser.getSyntaxProblems());
-                       }
+               if (parser.getSyntaxProblems().size() > 0) {
+                       problems.addAll(parser.getSyntaxProblems());
+               }
+
+               if(!ignoreProblems && hasErrors(problems)) {
                        return text;
                }
 
@@ -1550,6 +1553,17 @@ public class FORMATTER {
                }
        }
 
+       private boolean hasErrors(Collection<ICompilerProblem> problems) {
+               CompilerProblemCategorizer categorizer = new 
CompilerProblemCategorizer(null);
+               for(ICompilerProblem problem : problems) {
+                       CompilerProblemSeverity severity = 
categorizer.getProblemSeverity(problem);
+                       if(CompilerProblemSeverity.ERROR.equals(severity)) {
+                               return true;
+                       }
+               }
+               return false;
+       }
+
        private static class BlockStackItem {
                public BlockStackItem(IASToken token) {
                        this.token = token;
diff --git 
a/formatter/src/test/java/org/apache/royale/formatter/TestThrowStatement.java 
b/formatter/src/test/java/org/apache/royale/formatter/TestThrowStatement.java
index 7c380a9..d6c21f1 100644
--- 
a/formatter/src/test/java/org/apache/royale/formatter/TestThrowStatement.java
+++ 
b/formatter/src/test/java/org/apache/royale/formatter/TestThrowStatement.java
@@ -36,7 +36,7 @@ public class TestThrowStatement extends BaseFormatterTests {
                // @formatter:off
                        "throw;",
                        // @formatter:on
-                       problems
+                       null
                );
                assertEquals(
                // @formatter:off
@@ -57,7 +57,7 @@ public class TestThrowStatement extends BaseFormatterTests {
                // @formatter:off
                        "throw",
                        // @formatter:on
-                       problems
+                       null
                );
                assertEquals(
                // @formatter:off
@@ -116,7 +116,7 @@ public class TestThrowStatement extends BaseFormatterTests {
                        "throw\n" +
                        "new Error();",
                        // @formatter:on
-                       problems
+                       null
                );
                assertEquals(
                // @formatter:off

Reply via email to