Indexing is hard

- Add workarounds for odd out-of-bounds exceptions
- Bump version to 1.0.1-beta
This commit is contained in:
Jozufozu 2025-03-01 15:06:55 -08:00
parent 1c0e562b6a
commit ef32aab272
3 changed files with 22 additions and 18 deletions

View file

@ -8,6 +8,8 @@ import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.jetbrains.annotations.Nullable;
import dev.engine_room.flywheel.backend.glsl.SourceFile;
import dev.engine_room.flywheel.backend.glsl.SourceLines;
import dev.engine_room.flywheel.backend.glsl.error.ConsoleColors;
@ -56,18 +58,22 @@ public class FailedCompilation {
return;
}
Matcher matcher;
try {
Matcher matcher;
matcher = PATTERN_ONE.matcher(s);
if (matcher.find()) {
out.accept(interpretPattern1(matcher));
return;
}
matcher = PATTERN_ONE.matcher(s);
if (matcher.find()) {
out.accept(interpretPattern1(matcher));
return;
}
matcher = PATTERN_TWO.matcher(s);
if (matcher.find()) {
out.accept(interpretPattern2(matcher));
return;
matcher = PATTERN_TWO.matcher(s);
if (matcher.find()) {
out.accept(interpretPattern2(matcher));
return;
}
} catch (Throwable ignored) {
// noop, if parsing/span matching fails somehow lets just emit the raw error string.
}
out.accept(ErrorBuilder.create()
@ -114,15 +120,10 @@ public class FailedCompilation {
.pointAt(span, 1);
}
private ErrorBuilder interpretWithSpan(ErrorLevel errorLevel, int fileId, int lineNo, String span, String msg) {
private ErrorBuilder interpretWithSpan(ErrorLevel errorLevel, int fileId, int lineNo, @Nullable String span, String msg) {
var sourceFile = files.get(fileId - 1);
Span errorSpan;
if (span != null) {
errorSpan = sourceFile.getLineSpanMatching(lineNo, span);
} else {
errorSpan = sourceFile.getLineSpanNoWhitespace(lineNo);
}
Span errorSpan = sourceFile.getLineSpanMatching(lineNo, span);
return ErrorBuilder.create()
.header(errorLevel, msg)

View file

@ -374,9 +374,12 @@ public class IndirectInstancer<I extends Instance> extends AbstractInstancer<I>
contentsChanged.clear();
}
@Override
public void parallelUpdate() {
var pages = this.pages.get();
mergeablePages.clear(pages.length, mergeablePages.currentCapacity() + 1);
int page = 0;
while (mergeablePages.cardinality() > 1) {
page = mergeablePages.nextSetBit(page);

View file

@ -8,7 +8,7 @@ mod_homepage = https://github.com/Engine-Room/Flywheel
# Flywheel metadata
flywheel_id=flywheel
flywheel_name=Flywheel
flywheel_version=1.0.0
flywheel_version=1.0.1-beta
flywheel_description=An overhauled entity and block entity rendering API.
# Vanillin metadata
vanillin_id=vanillin