Browse Source

Tests and fix for: Bug 83565

   BCException "bad type name" thrown when compiling
tags/Root_AspectJ5_Development
mkersten 19 years ago
parent
commit
5765d534a5

+ 23
- 0
ajde/testdata/bug-83565/Bug.java View File


package mj.compiler.ast;

import java.util.Vector;

class Sequence<T extends AST> extends AST {
private Vector<T> elements = new Vector<T>();
public Sequence(T element) {
// super(element);
elements.add(element);
}
public int length() { return elements.size(); }
public T elementAt(int i) { return elements.elementAt(i); }
}

class AST<T> {
public AST() { }
public AST(T element) { }
}

+ 3
- 0
ajde/testdata/bug-83565/build.lst View File

-1.5
Bug.java

+ 1
- 0
ajde/testsrc/org/aspectj/ajde/AjdeTests.java View File

suite.addTestSuite(BuildCancellingTest.class); suite.addTestSuite(BuildCancellingTest.class);
suite.addTestSuite(JarManifestTest.class); suite.addTestSuite(JarManifestTest.class);
suite.addTestSuite(ExtensionTests.class); suite.addTestSuite(ExtensionTests.class);
suite.addTestSuite(GenericsTest.class);
//$JUnit-END$ //$JUnit-END$
return suite; return suite;

+ 25
- 0
ajde/testsrc/org/aspectj/ajde/GenericsTest.java View File

/*
* Created on Jan 27, 2005
*/
package org.aspectj.ajde;

import org.aspectj.asm.AsmManager;

/**
* @author Mik Kersten
*/
public class GenericsTest extends AjdeTestCase {
private AsmManager manager = null;
private static final String CONFIG_FILE_PATH = "../bug-83565/build.lst";
public void testBuild() {
// assertTrue("build success", doSynchronousBuild(CONFIG_FILE_PATH));
}
protected void setUp() throws Exception {
super.setUp("examples");
manager = AsmManager.getDefault();
}
}

+ 13
- 39
org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AsmHierarchyBuilder.java View File



import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.Stack;

import org.aspectj.ajdt.internal.compiler.ast.AdviceDeclaration;
import org.aspectj.ajdt.internal.compiler.ast.AspectDeclaration;
import org.aspectj.ajdt.internal.compiler.ast.InterTypeDeclaration;
import org.aspectj.ajdt.internal.compiler.ast.PointcutDeclaration;
import java.util.*;

import org.aspectj.ajdt.internal.compiler.ast.*;
import org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment; import org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment;
import org.aspectj.ajdt.internal.compiler.lookup.EclipseFactory; import org.aspectj.ajdt.internal.compiler.lookup.EclipseFactory;
import org.aspectj.asm.AsmManager;
import org.aspectj.asm.IHierarchy;
import org.aspectj.asm.IProgramElement;
import org.aspectj.asm.IRelationship;
import org.aspectj.asm.*;
import org.aspectj.asm.internal.ProgramElement; import org.aspectj.asm.internal.ProgramElement;
import org.aspectj.bridge.ISourceLocation; import org.aspectj.bridge.ISourceLocation;
import org.aspectj.bridge.SourceLocation; import org.aspectj.bridge.SourceLocation;
import org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor; import org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor;
import org.aspectj.org.eclipse.jdt.internal.compiler.CompilationResult; import org.aspectj.org.eclipse.jdt.internal.compiler.CompilationResult;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractVariableDeclaration;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ConstructorDeclaration;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ExtendedStringLiteral;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.FieldDeclaration;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ImportReference;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Initializer;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MethodDeclaration;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.QualifiedAllocationExpression;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.*;
import org.aspectj.org.eclipse.jdt.internal.compiler.env.IGenericType; import org.aspectj.org.eclipse.jdt.internal.compiler.env.IGenericType;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ClassScope;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodScope;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.*;
import org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemHandler; import org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemHandler;
import org.aspectj.util.LangUtil; import org.aspectj.util.LangUtil;
import org.aspectj.weaver.Member;
import org.aspectj.weaver.ResolvedMember;
import org.aspectj.weaver.TypeX;
import org.aspectj.weaver.World;
import org.aspectj.weaver.patterns.AndPointcut;
import org.aspectj.weaver.patterns.OrPointcut;
import org.aspectj.weaver.patterns.Pointcut;
import org.aspectj.weaver.patterns.ReferencePointcut;
import org.aspectj.weaver.*;
import org.aspectj.weaver.patterns.*;


/** /**
* At each iteration of <CODE>processCompilationUnit</CODE> the declarations for a * At each iteration of <CODE>processCompilationUnit</CODE> the declarations for a
if (methodDeclaration.binding != null) { if (methodDeclaration.binding != null) {
String memberName = ""; String memberName = "";
String memberBytecodeSignature = ""; String memberBytecodeSignature = "";
try {
try {
Member member = EclipseFactory.makeResolvedMember(methodDeclaration.binding); Member member = EclipseFactory.makeResolvedMember(methodDeclaration.binding);
memberName = member.getName(); memberName = member.getName();
memberBytecodeSignature = member.getSignature(); memberBytecodeSignature = member.getSignature();
} catch (BCException bce) { // bad type name
memberName = "<undefined>";
} catch (NullPointerException npe) { } catch (NullPointerException npe) {
memberName = "<undefined>"; memberName = "<undefined>";
} }
Member member = EclipseFactory.makeResolvedMember(constructorDeclaration.binding); Member member = EclipseFactory.makeResolvedMember(constructorDeclaration.binding);
memberName = member.getName(); memberName = member.getName();
memberBytecodeSignature = member.getSignature(); memberBytecodeSignature = member.getSignature();
} catch (BCException bce) { // bad type name
memberName = "<undefined>";
} catch (NullPointerException npe) { } catch (NullPointerException npe) {
memberName = "<undefined>"; memberName = "<undefined>";
} }

Loading…
Cancel
Save