Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
How far can faulty code goes?
Note this require direct call to
OpalCompiler
or other MOP facility.Editors won't let you install any faulty methods.
Iceberg has no issue to commit the method.
However, there is a #error critique
ReMethodHasSyntaxErrorRule
, so you cannot push faulty code unwillingly :)Note that file corruption should already be handled, as bad command-line file edition can happen.
But I don't know is the serialization format is fragile if the method contains garbage.
→ I checked, It seems that yes, the format is very fragile. It uses an ad hoc scanner and expect the content to be well-formed. This is bad because 1. it is uselessly complex code 2. it forces it to be synchronized with the language features (e.g. new literals or something) 3. it's limiting.
However, up to my knowledge, Iceberg never tries to warn you on the diff anyway. So full check mark here.
CodeError
debugger.Inspection of the syntax error is "manual" but easy (just inspect
self
). While it could be improved, it is much better than the awful syntax error debugger I removed at the beginning of Pharo12 (Kill syntax error debugger #12910). So full check mark here.Since there is nothing else in the commit, I don't know if the system is left in the middle or if there is some kind of transaction/rollback. However, this is a "classic" iceberg issue of fault handling and not specifically related to faulty code with syntax errors, so full check mark here
Epicea show you the diff and ask you to confirm. All fine and it revert the bad method
Epicea show you the diff and ask you to confirm.
But a growl (popup infobox in the lower left corner of the screen) show you the description of the CodeError, instead of launching a debugger. Why? Why you failed me Epicea?fixed by EpiceaBrowsers: stop catching all errors #13425
I'm quite happy about the current status.