Improve Codacy PR quality requirements:
Fields should be declared at the top of the class, before any method
declarations, constructors, initializers or inner classes.
Previously it could lead to contract violations for example consider
this:
A = Library{ Name:"A", Types: ["Sensors"] }
B = Library{ Name:"B", Types: null }
C = Library{ Name:"C", Types: ["Arduino"] }
it results in:
A<B (because B has Types==null and compare("A","B")<0)
B<C (because B has Types==null and compare("B","C")<0)
C<A (becuase C has Types=="Arduino" and the comparator returns -1)
This commit fix this behavior
For some reason the combination of the AdoptJDKJre 8 and Microsoft store
do not like JFileChooser.
This commit replace JFileChooser with a FileDialog that seems to work
without issues.
The GitHub-hosted runner is a virtual machine hosted by GitHub.
Xvfb on that setup defaults to a virtual screen size of 640x480
(XVFBARGS='-screen 0 640x480x16') which in turn makes the Arduino user
interface tests fail with exceptions like this:
[junit] org.fest.swing.exception.ActionFailedException: The component to click is out of the boundaries of the screen
[junit] at org.fest.swing.exception.ActionFailedException.actionFailure(ActionFailedException.java:33)
[junit] at org.fest.swing.core.RobotEventGenerator.pressMouse(RobotEventGenerator.java:74)
Setting the xvfb screen size to 1024x768 solves this error.
When transforming compiler errors (to make filenames more friendly), it
would match "fatal error" or "error" but then always reconstruct as
"error", modifying the compiler error in a way that is not intended.
This commit fixes that, as well as the previous hardcoding of the
"error: " prefix when rebuilding the error message, by capturing this
entire prefix and simply reproducing it in the resulting error message.
Error messages are detected and parsed using a regex. Part of this regex
matches the optional column number.
The code that handled this assumed that a missing column would result in
less elements in the matches array, but a regex always results in one
element per set of parenthesis in the regex, which will be null if no
capture was made for that element.
In practice, this meant that if no column was present in the error
message, a NullPointerException would be raised. Furthermore, gcc 9
seems to have started outputting omitting column numbers (instead of
printing 0) for some errors (such as unterminated #ifdef), which exposed
this problem.
This commit fixes this by simply using the fixed match numbers to take
apart the regex match, and by checking for a null column number (all
other captures are non-optional, so no need to check there).
This commit fixes instances when setText is called on editorTab and the rectangle that highlights the bracket match becomes incorrect.
This is because text is inserted to the document without notifying the textarea.
Calling setLineWrap internally fires an event that recalculates the bracket match rectangle and thus solves the problem.