Skip to content

Commit 597bf24

Browse files
committed
fix Rewriter
1 parent 6bdfea8 commit 597bf24

1 file changed

Lines changed: 13 additions & 6 deletions

File tree

scripts/settings/RewriteSettings.java

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
* KeY is licensed under the GNU General Public License Version 2
33
* SPDX-License-Identifier: GPL-2.0-only */
44

5-
package de.uka.ilkd.key;
6-
75
import de.uka.ilkd.key.nparser.KeYLexer;
86
import de.uka.ilkd.key.nparser.ParsingFacade;
97
import de.uka.ilkd.key.settings.ProofSettings;
@@ -107,7 +105,7 @@ private static void rewrite(Path file) throws IOException {
107105
settings.loadSettingsFromPropertyString(text.substring(1, text.length() - 1));
108106
output.append(settings.settingsToString());
109107

110-
while (iterator.hasNext() && token.getType() != KeYLexer.SEMI) {
108+
while (iterator.hasNext() && token.getType() != KeYLexer.RBRACE) {
111109
token = iterator.next();
112110
}
113111
} else {
@@ -122,11 +120,20 @@ private static void rewrite(Path file) throws IOException {
122120

123121
boolean write = true;
124122
try {
123+
// Try to parse the new content.
125124
ParsingFacade.parseFile(CharStreams.fromString(output.toString()));
126125
} catch (ParseCancellationException e) {
127-
write = false;
128-
LOGGER.error("Error parsing after rewrite file {}: {}", file, e.getMessage(), e);
129-
System.err.println(output);
126+
try {
127+
// if failed, check if the old content is also not parseable.
128+
ParsingFacade.parseFile(CharStreams.fromString(output.toString()));
129+
130+
// on success: do not write this file.
131+
write = false;
132+
LOGGER.error("Error parsing after rewrite file {}: {}", file, e.getMessage(), e);
133+
Files.writeString(file.resolveSibling(file.getFileName() + "-rewritten.error"), output.toString());
134+
} catch (ParseCancellationException e2) {
135+
//on error write file.
136+
}
130137
}
131138

132139
if (write || ALWAYS_WRITE) {

0 commit comments

Comments
 (0)