Skip to content

Commit 827591b

Browse files
committed
Fixes btraceio#236: Verifier does not allow simple 'return' from handler methods.
1 parent 82112f9 commit 827591b

1 file changed

Lines changed: 14 additions & 1 deletion

File tree

src/share/classes/com/sun/btrace/compiler/VerifierVisitor.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,20 @@ public Boolean visitNewClass(NewClassTree node, Void v) {
351351

352352
@Override
353353
public Boolean visitReturn(ReturnTree node, Void v) {
354-
reportError("return.type.should.be.void", node);
354+
if (node.getExpression() != null) {
355+
TreePath tp = verifier.getTreeUtils().getPath(verifier.getCompilationUnit(), node);
356+
while (tp != null) {
357+
tp = tp.getParentPath();
358+
Tree leaf = tp.getLeaf();
359+
if (leaf.getKind() == Tree.Kind.METHOD) {
360+
if (isAnnotated((MethodTree)leaf)) {
361+
return reportError("return.type.should.be.void", node);
362+
} else {
363+
return super.visitReturn(node, v);
364+
}
365+
}
366+
}
367+
}
355368
return super.visitReturn(node, v);
356369
}
357370

0 commit comments

Comments
 (0)