[aspectc-user] ElementCounter: `util' was not declared in this scope

Olaf Spinczyk Olaf.Spinczyk at informatik.uni-erlangen.de
Fri Jul 8 10:55:50 CEST 2005


Olaf Spinczyk wrote:
> Pablo,
> 
> Pablo Casado wrote:
> 
>> Hi,
>>
>> I installed acdt-2.0.3 and went through the tutorial examples, all 
>> compiled and ran without problems using managed makefiles except for 
>> ElementCounter. The compiler errors are listed below.
>>
>> I am using
>> eclipse 3.0.0
>> acdt-2.0.3
>> ac 0.9.3 (disabled the plugin in acdt)
>> mingw
>> windows xp (sp2)
>> The tutorial source files I extracted from aosd-2005-tut.zip
>>
>> ag++ -r repo.acp -p .. -c ../main.cc
>> ../ElementCounter2.ah:13: `util' was not declared in this scope
>> ../ElementCounter2.ah:13: parse error before `::' token
>> ../ElementCounter2.ah:19: `util' was not declared in this scope
>> ../ElementCounter2.ah:19: parse error before `::' token
>> ../ElementCounter2.ah:24: `util' was not declared in this scope
>> ../ElementCounter2.ah:24: parse error before `::' token
>> ../ElementCounter2.ah: In member function `void
>>   ElementCounter2::__a0_before(...)':
>> ../ElementCounter2.ah:14: `queue' undeclared (first use this function)
>> ../ElementCounter2.ah:14: (Each undeclared identifier is reported only 
>> once for
>>   each function it appears in.)
>> : In function `void
>>   AC::invoke_ElementCounter2_ElementCounter2_a0_before(JoinPoint*)':
>> :5: parse error before `::' token
>> : In function `void
>>   AC::invoke_ElementCounter2_ElementCounter2_a1_after(JoinPoint*)':
>> :10: parse error before `::' token
>> : In function `void
>>   AC::invoke_ElementCounter2_ElementCounter2_a2_after(JoinPoint*)':
>> :15: parse error before `::' token
>> error: Execution failed: ""g++" -c -xc++ "main.acc" -xnone"
> 
> 
> this is a bug in ac++ 0.9.3, which affects aspects that perform an 
> introduction into a class, have code advice on join points in the same 
> class, and include the header file of the class. Exactly, all these 
> circumstances come together in ElementCounter2.
> 
> If you only want all examples to compile, downgrade to the 0.9.2 version 
> of the ac++ compiler feature in your eclipse environment.
> 
> If you want a workaround that helps with ac++ 0.9.3, replace:
> 
> that(queue): before (util::Queue& queue) {    with
> that("util::Queue") : before () { JoinPoint::That &queue = tjp->that();

Ooops, of course it has to be

that("util::Queue") : before () { JoinPoint::That &queue = *tjp->that();

-Olaf




More information about the aspectc-user mailing list