Skip to content

Commit e9f9e1d

Browse files
committed
[DO NOT MERGE] Document failing test cases
1 parent 3237291 commit e9f9e1d

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed

baseline-error-prone/src/test/java/com/palantir/baseline/errorprone/IllegalSafeLoggingLambdaTest.java

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,102 @@ void fun(@Safe Object ob) {}
395395
.doTest();
396396
}
397397

398+
@Test
399+
public void testUnsafeLambdaSwitchStatement() {
400+
helper().addSourceLines(
401+
"Test.java",
402+
// language=Java
403+
"""
404+
import com.palantir.logsafe.*;
405+
import java.util.function.*;
406+
407+
enum MyEnum {
408+
ONE,
409+
TWO
410+
}
411+
412+
class Test {
413+
void f(MyEnum myEnum, @Unsafe Object unsafeValue) {
414+
@Safe
415+
Object result =
416+
switch (myEnum) {
417+
// BUG: Diagnostic contains: Dangerous
418+
case ONE -> unsafeValue;
419+
case TWO -> "safe";
420+
};
421+
}
422+
}
423+
""")
424+
.doTest();
425+
}
426+
427+
@Test
428+
void testOverrideArgumentSafety() {
429+
helper().addSourceLines(
430+
"Test.java",
431+
// language=Java
432+
"""
433+
import com.palantir.logsafe.*;
434+
import java.util.function.*;
435+
436+
interface MyInterface {
437+
@Safe
438+
String safeMethod(@Unsafe String safeArg);
439+
}
440+
441+
class MyClass implements MyInterface {
442+
@Override
443+
@Safe
444+
// BUG: Diagnostic contains: Dangerous
445+
public String safeMethod(@Safe String safeArg) {
446+
return "unsafe";
447+
}
448+
}
449+
""")
450+
.doTest();
451+
}
452+
453+
@Test
454+
void testLambdaConsumesSafetyAnnotatedType_reference() {
455+
helper().addSourceLines(
456+
"Test.java",
457+
// language=Java
458+
"""
459+
import com.palantir.logsafe.*;
460+
import java.util.function.*;
461+
462+
class Test {
463+
// BUG: Diagnostic contains: Dangerous
464+
Consumer<@Unsafe String> func = this::fun;
465+
466+
void fun(@Safe Object ob) {}
467+
}
468+
""")
469+
.doTest();
470+
}
471+
472+
@Test
473+
void testLambdaProducesSafetyAnnotatedType_reference() {
474+
helper().addSourceLines(
475+
"Test.java",
476+
// language=Java
477+
"""
478+
import com.palantir.logsafe.*;
479+
import java.util.function.*;
480+
481+
class Test {
482+
// BUG: Diagnostic contains: Dangerous
483+
Supplier<@Safe String> func = this::fun;
484+
485+
@Unsafe
486+
String fun() {
487+
return "unsafe";
488+
}
489+
}
490+
""")
491+
.doTest();
492+
}
493+
398494
private CompilationTestHelper helper() {
399495
return CompilationTestHelper.newInstance(IllegalSafeLoggingArgument.class, getClass());
400496
}

0 commit comments

Comments
 (0)