本文整理汇总了Java中com.sun.tools.javac.model.JavacElements.getTypeElement方法的典型用法代码示例。如果您正苦于以下问题:Java JavacElements.getTypeElement方法的具体用法?Java JavacElements.getTypeElement怎么用?Java JavacElements.getTypeElement使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.sun.tools.javac.model.JavacElements
的用法示例。
在下文中一共展示了JavacElements.getTypeElement方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: warnIfDuplicate
import com.sun.tools.javac.model.JavacElements; //导入方法依赖的package包/类
private boolean warnIfDuplicate( AbstractSrcMethod method, SrcClass extendedType, DiagnosticListener<JavaFileObject> errorHandler, JavacTaskImpl javacTask )
{
AbstractSrcMethod duplicate = findMethod( method, extendedType, new JavacTaskImpl[]{javacTask} );
if( duplicate == null )
{
return false;
}
JavacElements elems = JavacElements.instance( javacTask.getContext() );
Symbol.ClassSymbol sym = elems.getTypeElement( ((SrcClass)method.getOwner()).getName() );
JavaFileObject file = sym.sourcefile;
SrcAnnotationExpression anno = duplicate.getAnnotation( ExtensionMethod.class );
if( anno != null )
{
errorHandler.report( new JavacDiagnostic( file.toUri().getScheme() == null ? null : new SourceJavaFileObject( file.toUri() ),
Diagnostic.Kind.WARNING, 0, 0, 0, ExtIssueMsg.MSG_EXTENSION_DUPLICATION.get( method.signature(), ((SrcClass)method.getOwner()).getName(), anno.getArgument( ExtensionMethod.extensionClass ).getValue()) ) );
}
else
{
errorHandler.report( new JavacDiagnostic( file.toUri().getScheme() == null ? null : new SourceJavaFileObject( file.toUri() ),
Diagnostic.Kind.WARNING, 0, 0, 0, ExtIssueMsg.MSG_EXTENSION_SHADOWS.get( method.signature(), ((SrcClass)method.getOwner()).getName(), extendedType.getName()) ) );
}
return true;
}
示例2: getClassSymbol
import com.sun.tools.javac.model.JavacElements; //导入方法依赖的package包/类
public Pair<Symbol.ClassSymbol, JCTree.JCCompilationUnit> getClassSymbol( BasicJavacTask javacTask, String fqn )
{
JavacElements elementUtils = JavacElements.instance( javacTask.getContext() );
Symbol.ClassSymbol typeElement = elementUtils.getTypeElement( fqn );
JavacTrees trees = JavacTrees.instance( javacTask.getContext() );
TreePath path = trees.getPath( typeElement );
if( path != null )
{
return new Pair<>( typeElement, (JCTree.JCCompilationUnit)path.getCompilationUnit() );
}
else
{
// TreePath is only applicable to a source file;
// if fqn is not a source file, there is no compilation unit available
return new Pair<>( typeElement, null );
}
}
示例3: process
import com.sun.tools.javac.model.JavacElements; //导入方法依赖的package包/类
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
String expected = processingEnv.getOptions().get("output");
Set<String> expectedElements = new HashSet<>(Arrays.asList(expected.split(System.getProperty("line.separator"))));
Context context = ((JavacProcessingEnvironment) processingEnv).getContext();
Symtab syms = Symtab.instance(context);
for (Entry<String, String> e : MODULES_TO_CHECK_TO_SAMPLE_CLASS.entrySet()) {
String module = e.getKey();
ModuleElement mod = processingEnv.getElementUtils().getModuleElement(module);
String visible = "visible:" + module + ":" + (mod != null);
if (!expectedElements.contains(visible)) {
throw new AssertionError("actual: " + visible + "; expected: " + expected);
}
JavacElements javacElements = JavacElements.instance(context);
ClassSymbol unnamedClass = javacElements.getTypeElement(syms.unnamedModule, e.getValue());
String unnamed = "cp.CP:" + module + ":" + (unnamedClass != null);
if (!expectedElements.contains(unnamed)) {
throw new AssertionError("actual: " + unnamed + "; expected: " + expected);
}
ModuleElement automaticMod = processingEnv.getElementUtils().getModuleElement("automatic");
ClassSymbol automaticClass = javacElements.getTypeElement(automaticMod, e.getValue());
String automatic = "automatic.Automatic:" + module + ":" + (automaticClass != null);
if (!expectedElements.contains(automatic)) {
throw new AssertionError("actual: " + automatic + "; expected: " + expected);
}
}
return false;
}
示例4: replaceCastExpression
import com.sun.tools.javac.model.JavacElements; //导入方法依赖的package包/类
private JCExpression replaceCastExpression( JCExpression expression, Type type )
{
TreeMaker make = _tp.getTreeMaker();
Symtab symbols = _tp.getSymtab();
Names names = Names.instance( _tp.getContext() );
JavacElements elementUtils = JavacElements.instance( _tp.getContext() );
Symbol.ClassSymbol reflectMethodClassSym = elementUtils.getTypeElement( getClass().getName() );
Symbol.MethodSymbol makeInterfaceProxyMethod = resolveMethod( expression.pos(), names.fromString( "assignStructuralIdentity" ), reflectMethodClassSym.type,
List.from( new Type[]{symbols.objectType, symbols.classType} ) );
JavacElements javacElems = _tp.getElementUtil();
ArrayList<JCExpression> newArgs = new ArrayList<>();
newArgs.add( expression );
JCTree.JCFieldAccess ifaceClassExpr = (JCTree.JCFieldAccess)memberAccess( make, javacElems, type.tsym.getQualifiedName().toString() + ".class" );
ifaceClassExpr.type = symbols.classType;
ifaceClassExpr.sym = symbols.classType.tsym;
assignTypes( ifaceClassExpr.selected, type.tsym );
newArgs.add( ifaceClassExpr );
JCTree.JCMethodInvocation makeProxyCall = make.Apply( List.nil(), memberAccess( make, javacElems, ExtensionTransformer.class.getName() + ".assignStructuralIdentity" ), List.from( newArgs ) );
makeProxyCall.type = symbols.objectType;
JCTree.JCFieldAccess newMethodSelect = (JCTree.JCFieldAccess)makeProxyCall.getMethodSelect();
newMethodSelect.sym = makeInterfaceProxyMethod;
newMethodSelect.type = makeInterfaceProxyMethod.type;
assignTypes( newMethodSelect.selected, reflectMethodClassSym );
JCTypeCast castCall = make.TypeCast( symbols.objectType, makeProxyCall );
castCall.type = symbols.objectType;
return castCall;
}
示例5: process
import com.sun.tools.javac.model.JavacElements; //导入方法依赖的package包/类
@Override
public void process() {
fieldsMap.clear();
JavacElements utils = getEnvironment().getUtils();
Symbol.ClassSymbol viewByIdType = utils.getTypeElement(ANNOTATION_CLASS_NAME);
ViewWrapper viewWrapper = new ViewWrapper(utils);
BindableWrapper bindableWrapper = new BindableWrapper(utils);
Set<GField> allFields = getEnvironment().getGElementsAnnotatedWith(ViewById.class, GField.class);
for (GField field : allFields) {
JCTree.JCAnnotation annotation = field.extractAnnotation(viewByIdType);
JCTree fieldType = field.getTree().getType();
JCExpression value = annotation.getArguments().get(0);
if (value instanceof JCAssign) {
value = ((JCAssign) value).rhs;
}
if (!getEnvironment().getTypes().isSubtype(((Symbol.VarSymbol) field.getElement()).asType(), viewWrapper.getClassSymbol().asType())) {
getEnvironment().getMessager().printMessage(Diagnostic.Kind.ERROR,
"Annotation " + viewByIdType.getSimpleName() + " can be applied only to field with type extended of View",
field.getElement());
}
field.getGClass().implementInBestParent(bindableWrapper.getClassSymbol(), allFields);
field.getGClass().overrideMethod(bindableWrapper.getBindMethod(), true)
.prependCode("this.%s = (%s) $p0.findViewById(%s);", field.getName(), fieldType, value);
field.getGClass().overrideMethod(bindableWrapper.getUnbindMethod(), true)
.prependCode("this.%s = null;", field.getName());
Map<String, GField> classFieldsMap = fieldsMap.get(field.getGClass());
if (classFieldsMap == null) {
classFieldsMap = new HashMap<>();
fieldsMap.put(field.getGClass(), classFieldsMap);
}
classFieldsMap.put(value.toString(), field);
}
}
示例6: replaceStructuralCall
import com.sun.tools.javac.model.JavacElements; //导入方法依赖的package包/类
private JCTree replaceStructuralCall( JCTree.JCMethodInvocation theCall )
{
JCExpression methodSelect = theCall.getMethodSelect();
if( methodSelect instanceof JCTree.JCFieldAccess )
{
Symtab symbols = _tp.getSymtab();
Names names = Names.instance( _tp.getContext() );
JavacElements elementUtils = JavacElements.instance( _tp.getContext() );
Symbol.ClassSymbol reflectMethodClassSym = elementUtils.getTypeElement( getClass().getName() );
Symbol.MethodSymbol makeInterfaceProxyMethod = resolveMethod( theCall.pos(), names.fromString( "constructProxy" ), reflectMethodClassSym.type,
List.from( new Type[]{symbols.objectType, symbols.classType} ) );
JCTree.JCFieldAccess m = (JCTree.JCFieldAccess)methodSelect;
TreeMaker make = _tp.getTreeMaker();
JavacElements javacElems = _tp.getElementUtil();
JCExpression thisArg = m.selected;
ArrayList<JCExpression> newArgs = new ArrayList<>();
newArgs.add( thisArg );
JCTree.JCFieldAccess ifaceClassExpr = (JCTree.JCFieldAccess)memberAccess( make, javacElems, thisArg.type.tsym.getQualifiedName().toString() + ".class" );
ifaceClassExpr.type = symbols.classType;
ifaceClassExpr.sym = symbols.classType.tsym;
assignTypes( ifaceClassExpr.selected, thisArg.type.tsym );
newArgs.add( ifaceClassExpr );
JCTree.JCMethodInvocation makeProxyCall = make.Apply( List.nil(), memberAccess( make, javacElems, ExtensionTransformer.class.getName() + ".constructProxy" ), List.from( newArgs ) );
makeProxyCall.setPos( theCall.pos );
makeProxyCall.type = thisArg.type;
JCTree.JCFieldAccess newMethodSelect = (JCTree.JCFieldAccess)makeProxyCall.getMethodSelect();
newMethodSelect.sym = makeInterfaceProxyMethod;
newMethodSelect.type = makeInterfaceProxyMethod.type;
assignTypes( newMethodSelect.selected, reflectMethodClassSym );
JCTypeCast cast = make.TypeCast( thisArg.type, makeProxyCall );
cast.type = thisArg.type;
((JCTree.JCFieldAccess)theCall.meth).selected = cast;
return theCall;
}
return null;
}
示例7: BaseClassWrapper
import com.sun.tools.javac.model.JavacElements; //导入方法依赖的package包/类
public BaseClassWrapper(JavacElements utils, String classFullName) {
this.utils = utils;
this.classFullName = classFullName;
classSymbol = utils.getTypeElement(classFullName);
}
示例8: process
import com.sun.tools.javac.model.JavacElements; //导入方法依赖的package包/类
@Override
public void process() {
JavacElements utils = getEnvironment().getUtils();
Types types = getEnvironment().getTypes();
Symbol.ClassSymbol instanceStateType = utils.getTypeElement(ANNOTATION_CLASS_NAME);
BundleWrapper bundleWrapper = new BundleWrapper(getEnvironment());
RestorableWrapper restorableWrapper = new RestorableWrapper(utils);
Set<GField> allFields = getEnvironment().getGElementsAnnotatedWith(InstanceState.class, GField.class);
for (GField field : allFields) {
JCTree.JCAnnotation annotation = field.extractAnnotation(instanceStateType);
Type fieldType = ((Symbol.VarSymbol) field.getElement()).asType();
Symbol.MethodSymbol putMethod = bundleWrapper.getMethodForType(fieldType, false);
Symbol.MethodSymbol getMethod = bundleWrapper.getMethodForType(fieldType, true);
String fieldNameInBundle = "_gen_" + field.getGClass().getName() + "_" + field.getName();
if (putMethod == null || getMethod == null) {
getEnvironment().getMessager().printMessage(Diagnostic.Kind.ERROR,
"Can't found getter and putter for type of field " + field.getName(),
field.getElement());
continue;
}
field.getGClass().implementInBestParent(restorableWrapper.getClassSymbol(), allFields);
GMethod onSaveInstanceStateMethod = field.getGClass().overrideMethod(restorableWrapper.getSaveInstanceStateMethod(), true);
onSaveInstanceStateMethod.prependCode("$p0.%s(\"%s\", this.%s);",
putMethod.getSimpleName(), fieldNameInBundle, field.getName());
GMethod onCreateMethod = field.getGClass().overrideMethod(restorableWrapper.getRestoreInstanceStateMethod(), true);
String methodName = getMethod.getSimpleName().toString();
String template;
if (methodName.equals("getSerializable")) {
template = "this.%s = (%s) $p0.%s(\"%s\");";
} else if (methodName.equals("getParcelableArray")) {
fieldType = types.elemtype(fieldType);
template = "this.%s = net.xkor.genaroid.Utils.castParcelableArray(%s.class, $p0.%s(\"%s\"));";
} else {
template = "this.%s = $p0.%3$s(\"%4$s\");";
}
onCreateMethod.prependCode(template, field.getName(), fieldType, methodName, fieldNameInBundle);
}
}