Browse Source

@testcase PR#49784 aspect declares interface method (abstract decl, default impl)

tags/v_preCompileLoopAlteration
wisberg 20 years ago
parent
commit
2be86afae3

+ 6
- 2
tests/ajcTestsFailing.xml View File

@@ -137,7 +137,11 @@
<run class="SubtypeConstructorCW"/>
</ajc-test>



<ajc-test dir="bugs/interAbstract"
pr="49784"
title="aspect declares interface method (abstract decl, default impl)">
<compile files="InterfaceMethodDeclarationNonPublic.java" />
<run class="InterfaceMethodDeclarationNonPublic"/>
</ajc-test>

</suite>

+ 42
- 0
tests/bugs/interAbstract/InterfaceMethodDeclarationNonPublic.java View File

@@ -0,0 +1,42 @@
/* *******************************************************************
* Copyright (c) 2004 Contributors.
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Common Public License v1.0
* which accompanies this distribution and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* Wes Isberg initial implementation
* ******************************************************************/

import org.aspectj.testing.Tester;

/**
* @testcase PR#49784 aspect declares interface method (abstract decl, default impl)
*/
public class InterfaceMethodDeclarationNonPublic {

public static void main(String[] args) {
Tester.expectEvent("before-execution");
Tester.expectEvent("before-call");
I i = new C();
Tester.check(1 == i.getInt(), "1 == i.getInt()");
Tester.checkAllEvents();
}
}

interface I {}

aspect A {
abstract int I.getInt(); // implicitly public?
before() : execution(int getInt()) && target(I) {
Tester.event("before-execution");
}
before() : call(int getInt()) && target(I) {
Tester.event("before-call");
}
}
class C implements I {
int getInt() { return 1; }
}

Loading…
Cancel
Save