public ResolvedMember getMatchingSyntheticMember(Member member, ResolvedTypeX aspectType) {
ResolvedMember ret = getSyntheticConstructor();
if (ResolvedTypeX.matches(ret, member)) return getSignature();
- return null;
+ return super.getMatchingSyntheticMember(member, aspectType);
}
}
ResolvedMember.readResolvedMember(s, context),
readSuperMethodsCalled(s));
}
+
+ public ResolvedMember getMatchingSyntheticMember(Member member, ResolvedTypeX aspectType) {
+ //??? might give a field where a method is expected
+ ResolvedMember ret = AjcMemberMaker.interFieldGetDispatcher(getSignature(), aspectType);
+ if (ResolvedTypeX.matches(ret, member)) return getSignature();
+ ret = AjcMemberMaker.interFieldSetDispatcher(getSignature(), aspectType);
+ if (ResolvedTypeX.matches(ret, member)) return getSignature();
+ return super.getMatchingSyntheticMember(member, aspectType);
+ }
}
public ResolvedMember getMatchingSyntheticMember(Member member, ResolvedTypeX aspectType) {
ResolvedMember ret = AjcMemberMaker.interMethodDispatcher(getSignature(), aspectType);
if (ResolvedTypeX.matches(ret, member)) return getSignature();
- return null;
+ return super.getMatchingSyntheticMember(member, aspectType);
}
}
return Modifier.isAbstract(modifiers);
}
+ public boolean isPublic() {
+ return Modifier.isPublic(modifiers);
+ }
+
public boolean isVisible(ResolvedTypeX fromType) {
World world = fromType.getWorld();
return ResolvedTypeX.isVisible(getModifiers(), getDeclaringType().resolve(world),
// ----
public ResolvedMember getMatchingSyntheticMember(Member member, ResolvedTypeX aspectType) {
+ if ((getSignature() != null) && getSignature().isPublic() && member.equals(getSignature())) {
+ return getSignature();
+ }
+
return null;
}
if (this instanceof BcelObjectType) return;
//System.err.println("conflict at " + m2.getSourceLocation());
- getWorld().getMessageHandler().handleMessage(MessageUtil.error(
+ getWorld().showMessage(IMessage.ERROR,
"intertype declaration from "
+ m1.getAspectType().getName()
+ " conflicts with intertype declaration: "
+ m2.getSignature()
+ " from "
+ m2.getAspectType().getName(),
- m2.getSourceLocation()));
+ m2.getSourceLocation(), getSourceLocation());
}
public SignaturePattern parseMethodOrConstructorSignaturePattern() {
+ int startPos = tokenSource.peek().getStart();
ModifiersPattern modifiers = parseModifiersPattern();
TypePattern returnType = parseTypePattern();
TypePatternList parameterTypes = parseArgumentsPattern();
ThrowsPattern throwsPattern = parseOptionalThrowsPattern();
-
- return new SignaturePattern(kind, modifiers, returnType, declaringType, name, parameterTypes, throwsPattern);
+ SignaturePattern ret = new SignaturePattern(kind, modifiers, returnType, declaringType, name, parameterTypes, throwsPattern);
+ int endPos = tokenSource.peek(-1).getEnd();
+ ret.setLocation(sourceContext, startPos, endPos);
+ return ret;
}
private boolean maybeEatNew(TypePattern returnType) {
public SignaturePattern parseFieldSignaturePattern() {
+ int startPos = tokenSource.peek().getStart();
ModifiersPattern modifiers = parseModifiersPattern();
TypePattern returnType = parseTypePattern();
TypePattern declaringType = parseTypePattern();
declaringType = declaringType.ANY;
}
}
- return new SignaturePattern(Member.FIELD, modifiers, returnType,
+ SignaturePattern ret = new SignaturePattern(Member.FIELD, modifiers, returnType,
declaringType, name, TypePatternList.ANY, ThrowsPattern.ANY);
+
+ int endPos = tokenSource.peek(-1).getEnd();
+ ret.setLocation(sourceContext, startPos, endPos);
+ return ret;
}