diff --git a/.gitignore b/.gitignore index e3b98dcf5f..c57a023c7c 100644 --- a/.gitignore +++ b/.gitignore @@ -92,4 +92,7 @@ bin-test # VS Code Java project files .project -.vscode/ \ No newline at end of file +.vscode/ + +# ANTLR intermediate files +java/src/processing/mode/java/preproc/.antlr \ No newline at end of file diff --git a/app/build.xml b/app/build.xml index c48adeb02d..97b3bb0606 100644 --- a/app/build.xml +++ b/app/build.xml @@ -160,7 +160,8 @@ lib/ant-launcher.jar; lib/flatlaf.jar; lib/jna.jar; - lib/jna-platform.jar" + lib/jna-platform; + lib/build-flexmark-all.jar" debug="on" nowarn="true"> diff --git a/app/lib/build-flexmark-all.jar b/app/lib/build-flexmark-all.jar new file mode 100644 index 0000000000..9e17821c0c Binary files /dev/null and b/app/lib/build-flexmark-all.jar differ diff --git a/app/src/processing/app/ui/EditorStatus.java b/app/src/processing/app/ui/EditorStatus.java index 02a85f10e1..471a3e8bbb 100644 --- a/app/src/processing/app/ui/EditorStatus.java +++ b/app/src/processing/app/ui/EditorStatus.java @@ -35,15 +35,30 @@ import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; import java.awt.event.*; +import java.awt.BorderLayout; +import java.awt.Desktop; import javax.swing.*; import javax.swing.plaf.basic.BasicSplitPaneDivider; import javax.swing.plaf.basic.BasicSplitPaneUI; +import javax.swing.JScrollPane; +import javax.swing.event.*; +import javax.swing.border.Border; + +import java.util.regex.Pattern; +import java.util.regex.Matcher; +import java.net.URI; + +import java.io.IOException; import processing.app.Platform; import processing.app.Preferences; import processing.core.PApplet; +import com.vladsch.flexmark.html.HtmlRenderer; +import com.vladsch.flexmark.parser.Parser; +import com.vladsch.flexmark.util.ast.Node; +import com.vladsch.flexmark.util.data.MutableDataSet; /** * Panel just below the editing area that contains status messages. @@ -68,6 +83,7 @@ public class EditorStatus extends BasicSplitPaneDivider { int mode; String message = ""; + String friendlyMessage = ""; int messageRight; String url; @@ -79,6 +95,8 @@ public class EditorStatus extends BasicSplitPaneDivider { static final int COLLAPSE_PRESSED = 4; static final int CLIPBOARD_ROLLOVER = 5; static final int CLIPBOARD_PRESSED = 6; + static final int MORE_INFO_ROLLOVER = 7; + static final int MORE_INFO_PRESSED = 8; int mouseState; Font font; @@ -91,6 +109,8 @@ public class EditorStatus extends BasicSplitPaneDivider { ImageIcon[] searchIcon; ImageIcon[] collapseIcon; ImageIcon[] expandIcon; + ImageIcon[] moreInfoIcon; + float btnEnabledAlpha; float btnRolloverAlpha; @@ -106,8 +126,115 @@ public class EditorStatus extends BasicSplitPaneDivider { boolean collapsed = false; boolean indeterminate; + public boolean isFriendly = false; Thread thread; + public class friendlyErrorPopup{ + + private String messageText = "It looks like either a class name or semicolon is missing near 'asdfsda' on line 2!

Hint:
Either a [class](https://processing.org/reference/class.html) was not given a name or a [semicolon](https://processing.org/reference/semicolon.html) is missing.

Suggestion:
If the name was forgotten, add it and ensure that it does not start with a number. Make sure it only includes letters, numbers, dollar signs ($) and underscores (_). Also check that the name is not a keyword that is part of the language like \"true\", \"class\" or \"setup\" . If you are missing a semicolon, check the ends of the [statements](https://processing.org/examples/statementscomments.html) near 'if (' and line '43234234'.

For more: [Variable Examples](https://processing.org/examples/variables.html)"; + private JFrame popupFrame; + final int PROCESSING_SAYS_OFFSET = 5; + + String markdownToHtml(String target) { + MutableDataSet options = new MutableDataSet(); + Parser parser = Parser.builder(options).build(); + HtmlRenderer renderer = HtmlRenderer.builder(options).build(); + Node document = parser.parse(target); + String html = renderer.render(document); + html = "

🔵Processing says:" + html + "
" ; + return html; + } + + public friendlyErrorPopup(String messageText){ + + int firstLineIndex = messageText.indexOf("
"); + String firstSentence = messageText.substring(0,firstLineIndex); + int lineCounter = 0; + int newLineCount = 0; + String pureText = messageText; + + Pattern newLineCounter = Pattern.compile("
"); + Matcher newLineMatcher = newLineCounter.matcher(pureText); + + Pattern linkSkipper = Pattern.compile("\\[([^\\]]+)\\]\\([^\\)]+\\)"); + Matcher linkSkipperMatcher = linkSkipper.matcher(pureText); + + // allows for error messages with markdown links in the first line although there currently are none + while (linkSkipperMatcher.find()){ + + pureText = pureText.replace(linkSkipperMatcher.group(0),linkSkipperMatcher.group(1)); + + } + + firstSentence = pureText.substring(0,pureText.indexOf("
")); + firstLineIndex = firstSentence.length(); + + int index = 0; + + while (index < pureText.length()) { + lineCounter++; + int nextBreakIndex = pureText.indexOf("
", index); + index = (((nextBreakIndex - index) <= firstLineIndex) && nextBreakIndex != -1) ? nextBreakIndex + 4 : index + firstLineIndex; + } + + pureText = pureText.replaceAll("
",""); + + + messageText = markdownToHtml(messageText); + + JEditorPane errorPane = new JEditorPane(); + errorPane.setContentType("text/html"); + + JScrollPane scrollPane = new JScrollPane(errorPane); + + //not actually necessary but it allows the window resizing to work + errorPane.setFont(new Font("Source Code PRO", Font.PLAIN, 15)); + errorPane.setText(messageText); + errorPane.setBackground(Color.decode("#fafcff")); + errorPane.setEditable(false); + java.awt.FontMetrics fontMetrics = errorPane.getFontMetrics(errorPane.getFont()); + + int popupWidth = fontMetrics.stringWidth(firstSentence) - 25; + int popupHeight = (lineCounter + PROCESSING_SAYS_OFFSET) * fontMetrics.getHeight(); + + errorPane.addHyperlinkListener((event) -> { + HyperlinkEvent.EventType eventType = event.getEventType(); + boolean linkClicked = eventType == HyperlinkEvent.EventType.ACTIVATED; + if (linkClicked) { + String url = event.getURL().toString(); + URI targetUri = URI.create(url); + + try { + Desktop.getDesktop().browse(targetUri); + } + catch(IOException e) { + } + } + } + ); + + JFrame frame = new JFrame("[classname.pde]"); + + Border paddingBorder = BorderFactory.createEmptyBorder(0, 20, 0, 0); // Customize the padding as needed + Border border = BorderFactory.createLineBorder(java.awt.Color.decode("#58a2d1"), 10); // Customize the border as needed\ + Border compoundBorder = BorderFactory.createCompoundBorder(border, paddingBorder); + errorPane.setBorder(compoundBorder); + + // Set the preferred size for the scroll pane + scrollPane.setBorder(null); + frame.setSize(popupWidth, popupHeight); + + // Create a container panel to hold the scroll pane + JPanel containerPanel = new JPanel(new BorderLayout()); + containerPanel.add(scrollPane, BorderLayout.CENTER); + + frame.setContentPane(containerPanel); + + frame.setVisible(true); + + } + + } public EditorStatus(BasicSplitPaneUI ui, Editor editor) { super(ui); @@ -222,18 +349,26 @@ void updateMouse(MouseEvent e, boolean pressed) { } else if (url != null && mouseX > LEFT_MARGIN && mouseX < messageRight) { mouseState = pressed ? URL_PRESSED : URL_ROLLOVER; } + else if (mouseX > sizeW - (buttonEach * 3) && mouseX < sizeW - (2 * buttonEach)) { + mouseState = pressed ? MORE_INFO_PRESSED : MORE_INFO_ROLLOVER; + } } } // only change on the rollover, no need to update on press switch (mouseState) { case CLIPBOARD_ROLLOVER: + setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + break; case URL_ROLLOVER: setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); break; case COLLAPSE_ROLLOVER: setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); break; + case MORE_INFO_ROLLOVER: + setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + break; case NONE: setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); break; @@ -268,6 +403,8 @@ protected void updateTheme() { searchIcon = renderIcons("status/search", stateColors); collapseIcon = renderIcons("status/console-collapse", stateColors); expandIcon = renderIcons("status/console-expand", stateColors); + moreInfoIcon = renderIcons("status/more-info", stateColors); + btnEnabledAlpha = Theme.getInteger("status.button.enabled.alpha") / 100f; btnRolloverAlpha = Theme.getInteger("status.button.rollover.alpha") / 100f; @@ -310,12 +447,20 @@ public void empty() { repaint(); } + public void message(String message, int mode) { + + String newMessage = message; + int indexOfNewLine = message.indexOf("
"); + if (indexOfNewLine != -1) { + this.isFriendly = true; + this.friendlyMessage = message; + newMessage = message.substring(0,indexOfNewLine); - public void message(String message, int mode) { - this.message = message; + } + System.out.println("newMessage: "+newMessage); + this.message = newMessage; this.mode = mode; - - url = findURL(message); + url = findURL(newMessage); repaint(); } @@ -449,8 +594,29 @@ public void paint(Graphics g) { alpha = btnEnabledAlpha; } drawButton(g, 0, glyph, alpha); - } + + // draw more info button + + + if (isFriendly) { + ImageIcon glyph2; + glyph2 = moreInfoIcon[mode]; + if (mouseState == MORE_INFO_ROLLOVER) { + alpha = btnRolloverAlpha; + } else if (mouseState == MORE_INFO_PRESSED) { + alpha = btnPressedAlpha; + friendlyErrorPopup friendlyPopup = new friendlyErrorPopup(friendlyMessage); + } + else { + alpha = btnEnabledAlpha; + } + + drawButton(g,2,moreInfoIcon[mode],alpha); + } + + + } /** * @param pos A zero-based button index with 0 as the rightmost button diff --git a/build/shared/lib/languages/PDE.properties b/build/shared/lib/languages/PDE.properties index fb2042f225..68298480c4 100644 --- a/build/shared/lib/languages/PDE.properties +++ b/build/shared/lib/languages/PDE.properties @@ -418,7 +418,7 @@ editor.status.uninitialized_variable = The local variable “%s” may not have editor.status.no_effect_assignment = The assignment to variable “%s” has no effect editor.status.hiding_enclosing_type = The class “%s” cannot have the same name as your sketch or its enclosing class -editor.status.bad.assignment = Possible error on variable assignment near ‘%s’? +editor.status.bad.assignment = There seems to be some trouble with how a variable is being assigned near line 12!

Hint:
There is an issue with how a variable is being set to a certain value. This is also known as variable [assignment](https://processing.org/reference/assign.html). We suspect that the problem is near ‘%s’.

Suggestion:
It’s important to double check that the variable is named properly (see the variable example below) and that you have included all of the necessary parts of a variable assignment. You should also make sure that you chose an appropriate [datatype](https://processing.org/reference/#data) for your variable so that it can hold the value that you are assigning to it.

Example:To assign variables you need the type, name, assignment operator (=), the value you want to assign the variable to and a semicolon. Here’s the basic format:
[data type] [name] = [value];
Example:
> int num = 4;

For more: [Variable Example](https://processing.org/examples/variables.html) editor.status.bad.generic = Possibly missing type in generic near ‘%s’? editor.status.bad.identifier = Bad identifier? Did you forget a variable or start an identifier with digits near ‘%s’? editor.status.bad.parameter = Error on parameter or method declaration near ‘%s’? @@ -654,4 +654,4 @@ movie_maker.progress.creating_output_file = Creating output file movie_maker.progress.initializing = Initializing... movie_maker.progress.processing = Processing %s. -movie_maker.progress.handling_frame = Converting frame %s of %s... +movie_maker.progress.handling_frame = Converting frame %s of %s... \ No newline at end of file diff --git a/build/shared/lib/status/more-info.svg b/build/shared/lib/status/more-info.svg new file mode 100644 index 0000000000..7cc930afbe --- /dev/null +++ b/build/shared/lib/status/more-info.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/java/build.xml b/java/build.xml index ca2e32f4fb..2ceb306413 100644 --- a/java/build.xml +++ b/java/build.xml @@ -98,6 +98,7 @@ + @@ -116,6 +117,9 @@ + + + diff --git a/java/mode/ST-4.3.4.jar b/java/mode/ST-4.3.4.jar new file mode 100644 index 0000000000..21a2f61f88 Binary files /dev/null and b/java/mode/ST-4.3.4.jar differ diff --git a/java/mode/build-flexmark-all.jar b/java/mode/build-flexmark-all.jar new file mode 100644 index 0000000000..9e17821c0c Binary files /dev/null and b/java/mode/build-flexmark-all.jar differ diff --git a/java/src/processing/mode/java/debug/VariableNode.java b/java/src/processing/mode/java/debug/VariableNode.java index a7018ff149..c93cd9529c 100644 --- a/java/src/processing/mode/java/debug/VariableNode.java +++ b/java/src/processing/mode/java/debug/VariableNode.java @@ -54,9 +54,9 @@ public class VariableNode implements MutableTreeNode { public static final int TYPE_BYTE = 9; public static final int TYPE_SHORT = 10; public static final int TYPE_VOID = 11; - + private static final Pattern ARRAY_REGEX = Pattern.compile("^(?[^\\[]+)(?(\\[\\])+)(?(\\[\\d+\\])+)(?[^\\[]*)$"); - + protected String type; protected String name; protected Value value; diff --git a/java/src/processing/mode/java/preproc/PdeIssueEmitter.java b/java/src/processing/mode/java/preproc/PdeIssueEmitter.java index 7e5b48c5aa..175bbd0c29 100644 --- a/java/src/processing/mode/java/preproc/PdeIssueEmitter.java +++ b/java/src/processing/mode/java/preproc/PdeIssueEmitter.java @@ -77,7 +77,7 @@ public void syntaxError(Recognizer recognizer, Object offendingSymbol, int int charPositionInLine, String msg, RecognitionException e) { PreprocessIssueMessageSimplifier facade = PreprocessIssueMessageSimplifier.get(); - IssueMessageSimplification simplification = facade.simplify(msg); + IssueMessageSimplification simplification = facade.simplify(msg, line); IssueLocation issueLocation; diff --git a/java/src/processing/mode/java/preproc/PreprocessIssueMessageSimplifier.java b/java/src/processing/mode/java/preproc/PreprocessIssueMessageSimplifier.java index 4e112d161d..d3c34c9e73 100644 --- a/java/src/processing/mode/java/preproc/PreprocessIssueMessageSimplifier.java +++ b/java/src/processing/mode/java/preproc/PreprocessIssueMessageSimplifier.java @@ -96,11 +96,12 @@ public static String getLocalStr(String stringName) { * Attempt to improve an error message. * * @param originalMessage Error message generated from ANTLR. + * @param line The line number associated to the error. * @return An improved error message or the originalMessage if no improvements could be made. */ - public PdeIssueEmitter.IssueMessageSimplification simplify(String originalMessage) { + public PdeIssueEmitter.IssueMessageSimplification simplify(String originalMessage, int line) { Optional matching = strategies.stream() - .map((x) -> x.simplify(originalMessage)) + .map((x) -> x.simplify(originalMessage, line)) .filter(Optional::isPresent) .map(Optional::get) .findFirst(); @@ -213,10 +214,11 @@ protected interface PreprocIssueMessageSimplifierStrategy { * Attempt to simplify an error message. * * @param message The message to be simplified. + * @param line The line number associated with the error message. * @return An optional with an improved message or an empty optional if no improvements could be * made by this strategy. */ - Optional simplify(String message); + Optional simplify(String message, int line); } @@ -266,7 +268,7 @@ protected EvenCountTemplateMessageSimplifierStrategy(String newToken, String new } @Override - public Optional simplify(String message) { + public Optional simplify(String message, int line) { String messageContent = getOffendingArea(message); if (filter.isPresent()) { @@ -339,7 +341,7 @@ public TokenPairTemplateMessageSimplifierStrategy(String newToken1, String newTo } @Override - public Optional simplify(String message) { + public Optional simplify(String message, int line) { String messageContent = getOffendingArea(message); int count1 = SourceUtil.getCount(messageContent, token1); @@ -420,7 +422,7 @@ public RegexTemplateMessageSimplifierStrategy(String newRegex, String newHintTem } @Override - public Optional simplify(String message) { + public Optional simplify(String message, int line) { if (pattern.matcher(message).find()) { String newMessage = String.format( hintTemplate, @@ -545,7 +547,7 @@ protected PreprocIssueMessageSimplifierStrategy createInvalidGenericDefinitionSt */ protected PreprocIssueMessageSimplifierStrategy createMissingCurlyAtStartSimplifierStrategy() { - return message -> { + return (message, line) -> { boolean matches = message.endsWith("expecting {'throws', '{'}"); matches = matches || message.endsWith("expecting {'throws', '{', '[', ';'}"); @@ -563,7 +565,7 @@ protected PreprocIssueMessageSimplifierStrategy createMissingCurlyAtStartSimplif * Strategy to catch a missing curly at a semicolon. */ protected PreprocIssueMessageSimplifierStrategy createMissingCurlyAtSemicolonSimplifierStrategy() { - return message -> { + return (message, line) -> { if (!message.equals("missing ';' at '{'")) { return Optional.empty(); } @@ -578,7 +580,7 @@ protected PreprocIssueMessageSimplifierStrategy createMissingCurlyAtSemicolonSim * Strategy to check for an error indicating that an identifier was expected but not given. */ protected PreprocIssueMessageSimplifierStrategy createMissingIdentifierSimplifierStrategy() { - return message -> { + return (message, line) -> { if (message.toLowerCase().contains("missing identifier at")) { String newMessage = String.format( getLocalStr("editor.status.missing.name"), @@ -598,7 +600,7 @@ protected PreprocIssueMessageSimplifierStrategy createMissingIdentifierSimplifie */ protected PreprocIssueMessageSimplifierStrategy createKnownMissingSimplifierStrategy() { final Pattern parsePattern = Pattern.compile(".*missing '(.*)' at .*"); - return message -> { + return (message, line) -> { if (message.toLowerCase().contains("missing")) { String missingPiece; Matcher matcher = parsePattern.matcher(message); @@ -624,7 +626,7 @@ protected PreprocIssueMessageSimplifierStrategy createKnownMissingSimplifierStra * Strategy to handle extraneous input messages. */ protected PreprocIssueMessageSimplifierStrategy createExtraneousInputSimplifierStrategy() { - return message -> { + return (message, line) -> { if (message.toLowerCase().contains("extraneous")) { String innerMsg = getOffendingArea(message); @@ -645,7 +647,7 @@ protected PreprocIssueMessageSimplifierStrategy createExtraneousInputSimplifierS */ protected PreprocIssueMessageSimplifierStrategy createMismatchedInputSimplifierStrategy() { final Pattern parser = Pattern.compile("mismatched input '(.*)' expecting "); - return message -> { + return (message, line) -> { if (message.toLowerCase().contains("mismatched input")) { Matcher matcher = parser.matcher(message); @@ -671,7 +673,7 @@ protected PreprocIssueMessageSimplifierStrategy createMismatchedInputSimplifierS protected static class DefaultMessageSimplifier implements PreprocIssueMessageSimplifierStrategy { @Override - public Optional simplify(String message) { + public Optional simplify(String message, int line) { if (message.contains("viable alternative")) { String newMessage = String.format( getLocalizedGenericError("%s"), @@ -1049,4 +1051,4 @@ public Optional get(String key) { } } -} +} \ No newline at end of file diff --git a/java/test/processing/mode/java/preproc/AssignmentMessageSimplifierStrategyTest.java b/java/test/processing/mode/java/preproc/AssignmentMessageSimplifierStrategyTest.java index 22a2f53df4..eccd325f16 100644 --- a/java/test/processing/mode/java/preproc/AssignmentMessageSimplifierStrategyTest.java +++ b/java/test/processing/mode/java/preproc/AssignmentMessageSimplifierStrategyTest.java @@ -20,19 +20,19 @@ public void setup() { @Test public void testPresent() { - Optional msg = strategy.simplify(" int x ="); + Optional msg = strategy.simplify(" int x =", 123); Assert.assertTrue(msg.isPresent()); } @Test public void testPresentDiamond() { - Optional msg = strategy.simplify(" List x ="); + Optional msg = strategy.simplify(" List x =", 123); Assert.assertTrue(msg.isPresent()); } @Test public void testNotPresent() { - Optional msg = strategy.simplify("class {"); + Optional msg = strategy.simplify("class {", 123); Assert.assertTrue(msg.isEmpty()); } diff --git a/java/test/processing/mode/java/preproc/BadIdentifierMessageSimplifierStrategyTest.java b/java/test/processing/mode/java/preproc/BadIdentifierMessageSimplifierStrategyTest.java index 7a6e51997b..2c29eebd48 100644 --- a/java/test/processing/mode/java/preproc/BadIdentifierMessageSimplifierStrategyTest.java +++ b/java/test/processing/mode/java/preproc/BadIdentifierMessageSimplifierStrategyTest.java @@ -20,13 +20,13 @@ public void setup() { @Test public void testPresent() { - Optional msg = strategy.simplify("test(a,01a"); + Optional msg = strategy.simplify("test(a,01a", 123); Assert.assertTrue(msg.isPresent()); } @Test public void testNotPresent() { - Optional msg = strategy.simplify("class {"); + Optional msg = strategy.simplify("class {", 123); Assert.assertTrue(msg.isEmpty()); } diff --git a/java/test/processing/mode/java/preproc/BadParamMessageSimplifierStrategyTest.java b/java/test/processing/mode/java/preproc/BadParamMessageSimplifierStrategyTest.java index b0fb9a0b11..ec6dcefba3 100644 --- a/java/test/processing/mode/java/preproc/BadParamMessageSimplifierStrategyTest.java +++ b/java/test/processing/mode/java/preproc/BadParamMessageSimplifierStrategyTest.java @@ -20,25 +20,25 @@ public void setup() { @Test public void testPresent() { - Optional msg = strategy.simplify("void test (int x,\ny) \n{"); + Optional msg = strategy.simplify("void test (int x,\ny) \n{", 123); Assert.assertTrue(msg.isPresent()); } @Test public void testPresentUnderscore() { - Optional msg = strategy.simplify("void test (int x,\ny_y) \n{"); + Optional msg = strategy.simplify("void test (int x,\ny_y) \n{", 123); Assert.assertTrue(msg.isPresent()); } @Test public void testPresentVarType() { - Optional msg = strategy.simplify("void test (int x,\nint) \n{"); + Optional msg = strategy.simplify("void test (int x,\nint) \n{", 123); Assert.assertTrue(msg.isPresent()); } @Test public void testNotPresent() { - Optional msg = strategy.simplify("int x = y"); + Optional msg = strategy.simplify("int x = y", 123); Assert.assertTrue(msg.isEmpty()); } diff --git a/java/test/processing/mode/java/preproc/ExtraneousInputMessageSimplifierStrategyTest.java b/java/test/processing/mode/java/preproc/ExtraneousInputMessageSimplifierStrategyTest.java index 69b8d09f09..6bc69bfe9c 100644 --- a/java/test/processing/mode/java/preproc/ExtraneousInputMessageSimplifierStrategyTest.java +++ b/java/test/processing/mode/java/preproc/ExtraneousInputMessageSimplifierStrategyTest.java @@ -21,13 +21,13 @@ public void setup() { @Test public void testPresent() { - Optional msg = strategy.simplify("extraneous input 'test' expecting ';'"); + Optional msg = strategy.simplify("extraneous input 'test' expecting ';'", 123); Assert.assertTrue(msg.isPresent()); } @Test public void testNotPresent() { - Optional msg = strategy.simplify("String x = \" \\\" \""); + Optional msg = strategy.simplify("String x = \" \\\" \"", 123); Assert.assertTrue(msg.isEmpty()); } diff --git a/java/test/processing/mode/java/preproc/KnownMissingMessageSimplifierStrategyTest.java b/java/test/processing/mode/java/preproc/KnownMissingMessageSimplifierStrategyTest.java index 587cd45c42..61d5ccba49 100644 --- a/java/test/processing/mode/java/preproc/KnownMissingMessageSimplifierStrategyTest.java +++ b/java/test/processing/mode/java/preproc/KnownMissingMessageSimplifierStrategyTest.java @@ -20,13 +20,13 @@ public void setup() { @Test public void testPresent() { - Optional msg = strategy.simplify("missing ';' at 'addCircle'"); + Optional msg = strategy.simplify("missing ';' at 'addCircle'", 123); Assert.assertTrue(msg.isPresent()); } @Test public void testNotPresent() { - Optional msg = strategy.simplify("String x = \" \\\" \""); + Optional msg = strategy.simplify("String x = \" \\\" \"", 123); Assert.assertTrue(msg.isEmpty()); } diff --git a/java/test/processing/mode/java/preproc/MismatchedInputMessageSimplifierStrategyTest.java b/java/test/processing/mode/java/preproc/MismatchedInputMessageSimplifierStrategyTest.java index c3da11d8db..f470459fea 100644 --- a/java/test/processing/mode/java/preproc/MismatchedInputMessageSimplifierStrategyTest.java +++ b/java/test/processing/mode/java/preproc/MismatchedInputMessageSimplifierStrategyTest.java @@ -21,13 +21,13 @@ public void setup() { @Test public void testPresent() { - Optional msg = strategy.simplify("mismatched input 'final' expecting {'instanceof', ';', ',', '.', '>', '<', '==', '<=', '>=', '!=', '&&', '||', '++', '--', '+', '-', '*', '/', '&', '|', '^', '%', '::'}"); + Optional msg = strategy.simplify("mismatched input 'final' expecting {'instanceof', ';', ',', '.', '>', '<', '==', '<=', '>=', '!=', '&&', '||', '++', '--', '+', '-', '*', '/', '&', '|', '^', '%', '::'}", 123); Assert.assertTrue(msg.isPresent()); } @Test public void testNotPresent() { - Optional msg = strategy.simplify("String x = \" \\\" \""); + Optional msg = strategy.simplify("String x = \" \\\" \"", 123); Assert.assertTrue(msg.isEmpty()); } diff --git a/java/test/processing/mode/java/preproc/MissingChevMessageSimplifierStrategyTest.java b/java/test/processing/mode/java/preproc/MissingChevMessageSimplifierStrategyTest.java index 9b6d4d6c8a..d9895d17c2 100644 --- a/java/test/processing/mode/java/preproc/MissingChevMessageSimplifierStrategyTest.java +++ b/java/test/processing/mode/java/preproc/MissingChevMessageSimplifierStrategyTest.java @@ -20,13 +20,13 @@ public void setup() { @Test public void testPresent() { - Optional msg = strategy.simplify("class Test msg = strategy.simplify("class Test msg = strategy.simplify("class {"); + Optional msg = strategy.simplify("class {", 123); Assert.assertTrue(msg.isEmpty()); } diff --git a/java/test/processing/mode/java/preproc/MissingClassNameMessageSimplifierStrategyTest.java b/java/test/processing/mode/java/preproc/MissingClassNameMessageSimplifierStrategyTest.java index ebbfe6659c..889257f279 100644 --- a/java/test/processing/mode/java/preproc/MissingClassNameMessageSimplifierStrategyTest.java +++ b/java/test/processing/mode/java/preproc/MissingClassNameMessageSimplifierStrategyTest.java @@ -20,19 +20,19 @@ public void setup() { @Test public void testPresentExtends() { - Optional msg = strategy.simplify("class extends Base\n{"); + Optional msg = strategy.simplify("class extends Base\n{", 123); Assert.assertTrue(msg.isPresent()); } @Test public void testPresentNoExtends() { - Optional msg = strategy.simplify("class \n{"); + Optional msg = strategy.simplify("class \n{", 123); Assert.assertTrue(msg.isPresent()); } @Test public void testNotPresent() { - Optional msg = strategy.simplify("int x = y"); + Optional msg = strategy.simplify("int x = y", 123); Assert.assertTrue(msg.isEmpty()); } diff --git a/java/test/processing/mode/java/preproc/MissingCurlyMessageSimplifierStrategyTest.java b/java/test/processing/mode/java/preproc/MissingCurlyMessageSimplifierStrategyTest.java index c63e33f134..85dc05fa03 100644 --- a/java/test/processing/mode/java/preproc/MissingCurlyMessageSimplifierStrategyTest.java +++ b/java/test/processing/mode/java/preproc/MissingCurlyMessageSimplifierStrategyTest.java @@ -20,13 +20,13 @@ public void setup() { @Test public void testPresent() { - Optional msg = strategy.simplify("class Test {"); + Optional msg = strategy.simplify("class Test {", 123); Assert.assertTrue(msg.isPresent()); } @Test public void testNotPresent() { - Optional msg = strategy.simplify("class Test { }"); + Optional msg = strategy.simplify("class Test { }", 123); Assert.assertTrue(msg.isEmpty()); } diff --git a/java/test/processing/mode/java/preproc/MissingDoubleQuoteMessageSimplifierStrategyTest.java b/java/test/processing/mode/java/preproc/MissingDoubleQuoteMessageSimplifierStrategyTest.java index bb4e79c3bb..c70b2ef8c9 100644 --- a/java/test/processing/mode/java/preproc/MissingDoubleQuoteMessageSimplifierStrategyTest.java +++ b/java/test/processing/mode/java/preproc/MissingDoubleQuoteMessageSimplifierStrategyTest.java @@ -20,13 +20,13 @@ public void setup() { @Test public void testPresent() { - Optional msg = strategy.simplify("String x = \" \" \""); + Optional msg = strategy.simplify("String x = \" \" \"", 123); Assert.assertTrue(msg.isPresent()); } @Test public void testNotPresent() { - Optional msg = strategy.simplify("String x = \" \\\" \""); + Optional msg = strategy.simplify("String x = \" \\\" \"", 123); Assert.assertTrue(msg.isEmpty()); } diff --git a/java/test/processing/mode/java/preproc/MissingGenericTypeMessageSimplifierStrategyTest.java b/java/test/processing/mode/java/preproc/MissingGenericTypeMessageSimplifierStrategyTest.java index e6847470f9..644bdb0ec9 100644 --- a/java/test/processing/mode/java/preproc/MissingGenericTypeMessageSimplifierStrategyTest.java +++ b/java/test/processing/mode/java/preproc/MissingGenericTypeMessageSimplifierStrategyTest.java @@ -20,13 +20,13 @@ public void setup() { @Test public void testPresent() { - Optional msg = strategy.simplify("<>'"); + Optional msg = strategy.simplify("<>'", 123); Assert.assertTrue(msg.isPresent()); } @Test public void testNotPresent() { - Optional msg = strategy.simplify("class {"); + Optional msg = strategy.simplify("class {", 123); Assert.assertTrue(msg.isEmpty()); } diff --git a/java/test/processing/mode/java/preproc/MissingIdentifierMessageSimplifierStrategyTest.java b/java/test/processing/mode/java/preproc/MissingIdentifierMessageSimplifierStrategyTest.java index 924aec011f..8733109359 100644 --- a/java/test/processing/mode/java/preproc/MissingIdentifierMessageSimplifierStrategyTest.java +++ b/java/test/processing/mode/java/preproc/MissingIdentifierMessageSimplifierStrategyTest.java @@ -21,13 +21,13 @@ public void setup() { @Test public void testPresent() { - Optional msg = strategy.simplify("Missing identifier at ';'"); + Optional msg = strategy.simplify("Missing identifier at ';'", 123); Assert.assertTrue(msg.isPresent()); } @Test public void testNotPresent() { - Optional msg = strategy.simplify("String x = \" \\\" \""); + Optional msg = strategy.simplify("String x = \" \\\" \"", 123); Assert.assertTrue(msg.isEmpty()); } diff --git a/java/test/processing/mode/java/preproc/MissingMethodNameMessageSimplifierStrategyTest.java b/java/test/processing/mode/java/preproc/MissingMethodNameMessageSimplifierStrategyTest.java index e94dba63bd..9ffc8c6aae 100644 --- a/java/test/processing/mode/java/preproc/MissingMethodNameMessageSimplifierStrategyTest.java +++ b/java/test/processing/mode/java/preproc/MissingMethodNameMessageSimplifierStrategyTest.java @@ -20,25 +20,25 @@ public void setup() { @Test public void testPresent() { - Optional msg = strategy.simplify("void (int x) \n{"); + Optional msg = strategy.simplify("void (int x) \n{", 123); Assert.assertTrue(msg.isPresent()); } @Test public void testPresentNoSpace() { - Optional msg = strategy.simplify("test(int x) \n{"); + Optional msg = strategy.simplify("test(int x) \n{", 123); Assert.assertTrue(msg.isPresent()); } @Test public void testPresentUnderscore() { - Optional msg = strategy.simplify("void (int x_y) \n{"); + Optional msg = strategy.simplify("void (int x_y) \n{", 123); Assert.assertTrue(msg.isPresent()); } @Test public void testNotPresent() { - Optional msg = strategy.simplify("int x = y"); + Optional msg = strategy.simplify("int x = y", 123); Assert.assertTrue(msg.isEmpty()); } diff --git a/java/test/processing/mode/java/preproc/MissingParenMessageSimplifierStrategyTest.java b/java/test/processing/mode/java/preproc/MissingParenMessageSimplifierStrategyTest.java index f6e8e3de27..522917a389 100644 --- a/java/test/processing/mode/java/preproc/MissingParenMessageSimplifierStrategyTest.java +++ b/java/test/processing/mode/java/preproc/MissingParenMessageSimplifierStrategyTest.java @@ -20,13 +20,13 @@ public void setup() { @Test public void testPresent() { - Optional msg = strategy.simplify("int x = ((5 + 4) / 3"); + Optional msg = strategy.simplify("int x = ((5 + 4) / 3", 123); Assert.assertTrue(msg.isPresent()); } @Test public void testNotPresent() { - Optional msg = strategy.simplify("int x = (y/5)/(\n4)"); + Optional msg = strategy.simplify("int x = (y/5)/(\n4)", 123); Assert.assertTrue(msg.isEmpty()); } diff --git a/java/test/processing/mode/java/preproc/MissingSingleQuoteMessageSimplifierStrategyTest.java b/java/test/processing/mode/java/preproc/MissingSingleQuoteMessageSimplifierStrategyTest.java index 0c53c1df65..60169c987e 100644 --- a/java/test/processing/mode/java/preproc/MissingSingleQuoteMessageSimplifierStrategyTest.java +++ b/java/test/processing/mode/java/preproc/MissingSingleQuoteMessageSimplifierStrategyTest.java @@ -19,13 +19,13 @@ public void setup() { @Test public void testPresent() { - Optional msg = strategy.simplify("char x = '"); + Optional msg = strategy.simplify("char x = '", 123); Assert.assertTrue(msg.isPresent()); } @Test public void testNotPresent() { - Optional msg = strategy.simplify("char x = '\\''"); + Optional msg = strategy.simplify("char x = '\\''", 123); Assert.assertTrue(msg.isEmpty()); } diff --git a/java/test/processing/mode/java/preproc/MissingVariableNameMessageSimplifierStrategyTest.java b/java/test/processing/mode/java/preproc/MissingVariableNameMessageSimplifierStrategyTest.java index e2c69757a4..7864466cd3 100644 --- a/java/test/processing/mode/java/preproc/MissingVariableNameMessageSimplifierStrategyTest.java +++ b/java/test/processing/mode/java/preproc/MissingVariableNameMessageSimplifierStrategyTest.java @@ -20,13 +20,13 @@ public void setup() { @Test public void testPresent() { - Optional msg = strategy.simplify("char = ';"); + Optional msg = strategy.simplify("char = ';", 123); Assert.assertTrue(msg.isPresent()); } @Test public void testNotPresent() { - Optional msg = strategy.simplify("class test {"); + Optional msg = strategy.simplify("class test {", 123); Assert.assertTrue(msg.isEmpty()); } diff --git a/java/test/processing/mode/java/preproc/util/PreprocessIssueMessageSimplifierTest.java b/java/test/processing/mode/java/preproc/util/PreprocessIssueMessageSimplifierTest.java index 617313b468..44382a57dc 100644 --- a/java/test/processing/mode/java/preproc/util/PreprocessIssueMessageSimplifierTest.java +++ b/java/test/processing/mode/java/preproc/util/PreprocessIssueMessageSimplifierTest.java @@ -10,56 +10,59 @@ public class PreprocessIssueMessageSimplifierTest { @Test public void testAssignment() { String input = "List ="; - String output = PreprocessIssueMessageSimplifier.get().simplify(input).getMessage(); + String output = PreprocessIssueMessageSimplifier.get().simplify(input, 123).getMessage(); Assert.assertTrue(output.contains("assignment")); } @Test public void testBadIdentifier() { String input = "List 9"; - String output = PreprocessIssueMessageSimplifier.get().simplify(input).getMessage(); + String output = PreprocessIssueMessageSimplifier.get().simplify(input, 123).getMessage(); + System.out.println("output:"+output); Assert.assertTrue(output.contains("digit")); } @Test public void testBadParamLead() { String input = "x,"; - String output = PreprocessIssueMessageSimplifier.get().simplify(input).getMessage(); + String output = PreprocessIssueMessageSimplifier.get().simplify(input, 123).getMessage(); Assert.assertTrue(output.contains("parameter")); } @Test public void testBadParamEnd() { String input = "colorGen),"; - String output = PreprocessIssueMessageSimplifier.get().simplify(input).getMessage(); + String output = PreprocessIssueMessageSimplifier.get().simplify(input, 123).getMessage(); Assert.assertTrue(output.contains("parameter")); } @Test public void testCaret() { String input = "List")); } @Test public void testMissingIdentifier() { String input = "missing Identifier at '{'"; - String output = PreprocessIssueMessageSimplifier.get().simplify(input).getMessage(); + String output = PreprocessIssueMessageSimplifier.get().simplify(input, 123).getMessage(); + System.out.println("testMissingIdentifieroutput:" + output); Assert.assertTrue(output.contains("{")); } @Test public void simplifyParen() { String input = "no viable alternative at input 'ellipse(\n\nellipse();'"; - String output = PreprocessIssueMessageSimplifier.get().simplify(input).getMessage(); + String output = PreprocessIssueMessageSimplifier.get().simplify(input, 123).getMessage(); Assert.assertNotNull(output); } @Test public void simplifySemicolon() { String input = "no viable alternative at input 'ellipse(\n\nellipse())'"; - String output = PreprocessIssueMessageSimplifier.get().simplify(input).getMessage(); + String output = PreprocessIssueMessageSimplifier.get().simplify(input, 123).getMessage(); Assert.assertNotNull(output); }