Skip to content

Commit 406c195

Browse files
committed
Add tests inspired by errorprone/bugpatterns/DirectReturnTest.java
1 parent 47cdf1e commit 406c195

File tree

1 file changed

+260
-0
lines changed

1 file changed

+260
-0
lines changed

src/test/java/org/openrewrite/staticanalysis/InlineVariableTest.java

Lines changed: 260 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,4 +396,264 @@ String getString() {
396396
)
397397
);
398398
}
399+
400+
@Test
401+
void inlineAssignmentToParameter() {
402+
rewriteRun(
403+
//language=java
404+
java(
405+
"""
406+
class Test {
407+
String test(String param) {
408+
param = toString();
409+
return param;
410+
}
411+
}
412+
""",
413+
"""
414+
class Test {
415+
String test(String param) {
416+
return toString();
417+
}
418+
}
419+
"""
420+
)
421+
);
422+
}
423+
424+
@Test
425+
void inlineMultipleAssignmentsBeforeReturn() {
426+
rewriteRun(
427+
//language=java
428+
java(
429+
"""
430+
class Test {
431+
String test() {
432+
String variable = null;
433+
variable = toString();
434+
return variable;
435+
}
436+
}
437+
""",
438+
"""
439+
class Test {
440+
String test() {
441+
String variable = null;
442+
return toString();
443+
}
444+
}
445+
"""
446+
)
447+
);
448+
}
449+
450+
@Test
451+
void inlineAssignmentWithMethodCall() {
452+
rewriteRun(
453+
//language=java
454+
java(
455+
"""
456+
class Test {
457+
String spy() { return "spy"; }
458+
459+
String test() {
460+
String variable = spy();
461+
return variable;
462+
}
463+
}
464+
""",
465+
"""
466+
class Test {
467+
String spy() { return "spy"; }
468+
469+
String test() {
470+
return spy();
471+
}
472+
}
473+
"""
474+
)
475+
);
476+
}
477+
478+
@Test
479+
void inlineAssignmentInElseBlockWhilePreservingIfBlock() {
480+
rewriteRun(
481+
//language=java
482+
java(
483+
"""
484+
class Test {
485+
String test(boolean condition) {
486+
String variable = toString();
487+
if (condition) {
488+
return variable;
489+
} else {
490+
variable = "foo";
491+
return variable;
492+
}
493+
}
494+
}
495+
""",
496+
"""
497+
class Test {
498+
String test(boolean condition) {
499+
String variable = toString();
500+
if (condition) {
501+
return variable;
502+
} else {
503+
return "foo";
504+
}
505+
}
506+
}
507+
"""
508+
)
509+
);
510+
}
511+
512+
@Test
513+
void inlineVariableInElseBlock() {
514+
rewriteRun(
515+
//language=java
516+
java(
517+
"""
518+
class Test {
519+
String test(boolean condition) {
520+
if (condition) {
521+
return "bar";
522+
} else {
523+
String variable = "foo";
524+
return variable;
525+
}
526+
}
527+
}
528+
""",
529+
"""
530+
class Test {
531+
String test(boolean condition) {
532+
if (condition) {
533+
return "bar";
534+
} else {
535+
return "foo";
536+
}
537+
}
538+
}
539+
"""
540+
)
541+
);
542+
}
543+
544+
@Test
545+
void inlineAssignmentInTryBlock() {
546+
rewriteRun(
547+
//language=java
548+
java(
549+
"""
550+
class Test {
551+
String test() {
552+
try {
553+
String result = someMethod();
554+
return result;
555+
} catch (Exception e) {
556+
return null;
557+
}
558+
}
559+
560+
String someMethod() throws Exception {
561+
return "value";
562+
}
563+
}
564+
""",
565+
"""
566+
class Test {
567+
String test() {
568+
try {
569+
return someMethod();
570+
} catch (Exception e) {
571+
return null;
572+
}
573+
}
574+
575+
String someMethod() throws Exception {
576+
return "value";
577+
}
578+
}
579+
"""
580+
)
581+
);
582+
}
583+
584+
@Test
585+
void inlineVariableWithCast() {
586+
rewriteRun(
587+
//language=java
588+
java(
589+
"""
590+
class Test {
591+
Object test() {
592+
String str = (String) getObject();
593+
return str;
594+
}
595+
596+
Object getObject() {
597+
return "string";
598+
}
599+
}
600+
""",
601+
"""
602+
class Test {
603+
Object test() {
604+
return (String) getObject();
605+
}
606+
607+
Object getObject() {
608+
return "string";
609+
}
610+
}
611+
"""
612+
)
613+
);
614+
}
615+
616+
@Test
617+
void inlineVariableWithTernary() {
618+
rewriteRun(
619+
//language=java
620+
java(
621+
"""
622+
class Test {
623+
String test(boolean flag) {
624+
String result = flag ? "yes" : "no";
625+
return result;
626+
}
627+
}
628+
""",
629+
"""
630+
class Test {
631+
String test(boolean flag) {
632+
return flag ? "yes" : "no";
633+
}
634+
}
635+
"""
636+
)
637+
);
638+
}
639+
640+
@Test
641+
void doNotInlineWhenVariableIsReassigned() {
642+
rewriteRun(
643+
//language=java
644+
java(
645+
"""
646+
class Test {
647+
String test(boolean condition) {
648+
String result = "initial";
649+
if (condition) {
650+
result = "changed";
651+
}
652+
return result;
653+
}
654+
}
655+
"""
656+
)
657+
);
658+
}
399659
}

0 commit comments

Comments
 (0)