Skip to content

Commit ed61749

Browse files
committed
safety checks
1 parent 531007c commit ed61749

2 files changed

Lines changed: 27 additions & 0 deletions

File tree

de.peeeq.wurstscript/src/main/java/de/peeeq/wurstscript/attributes/AttrFunctionSignature.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ public static FunctionSignature calculate(StmtCall fc) {
6464
}
6565

6666
private static void checkCodeClosureCaptures(StmtCall fc, FunctionSignature sig) {
67+
if (!sig.isValidParameterNumber(fc.getArgs().size())) {
68+
return;
69+
}
6770
for (int i = 0; i < fc.getArgs().size(); i++) {
6871
Expr arg = fc.getArgs().get(i);
6972
if (!(arg instanceof ExprClosure)) {

de.peeeq.wurstscript/src/test/java/tests/wurstscript/tests/LspNativeFeaturesTests.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -547,6 +547,30 @@ public void inlayHintsStayStableWhileTemporarilyUnparsable() throws IOException
547547
assertTrue(errorLabels.contains("amount:"), "Expected cached hints to be reused during parse errors.");
548548
}
549549

550+
@Test
551+
public void inlayHintsDoNotCrashOnCascadeCodeLambdaWithMissingTarget() throws IOException {
552+
CompletionTestData data = input(
553+
"package test",
554+
"class TriggerWrap",
555+
" function addAction(code c)",
556+
" skip",
557+
"init",
558+
" let t = new TriggerWrap()",
559+
" ..missing() ->",
560+
" skip",
561+
"endpackage"
562+
);
563+
TestContext ctx = createContext(data, data.buffer);
564+
565+
InlayHintParams params = new InlayHintParams(
566+
new TextDocumentIdentifier(ctx.uri),
567+
new Range(new Position(0, 0), new Position(100, 0))
568+
);
569+
570+
List<InlayHint> hints = new InlayHintsRequest(params, ctx.bufferManager).execute(ctx.modelManager);
571+
assertNotNull(hints);
572+
}
573+
550574
@Test
551575
public void prepareRenameReturnsSymbolRange() throws IOException {
552576
CompletionTestData data = input(

0 commit comments

Comments
 (0)