You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by jo...@apache.org on 2021/10/21 21:33:20 UTC
[royale-compiler] 01/04: formatter: ignore compiler problems that
aren't errors
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 <jo...@apache.org>
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