Java Code Examples for org.codehaus.groovy.ast.expr.PropertyExpression#getProperty()
The following examples show how to use
org.codehaus.groovy.ast.expr.PropertyExpression#getProperty() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: VariableScopeVisitor.java From netbeans with Apache License 2.0 | 6 votes |
private void addExpressionOccurrences(PropertyExpression expression) { final Expression property = expression.getProperty(); final String nodeAsString = expression.getPropertyAsString(); if (nodeAsString != null) { if (leaf instanceof Variable && nodeAsString.equals(((Variable) leaf).getName())) { occurrences.add(property); } else if (leaf instanceof ConstantExpression && leafParent instanceof PropertyExpression) { PropertyExpression propertyUnderCursor = (PropertyExpression) leafParent; if (nodeAsString.equals(propertyUnderCursor.getPropertyAsString())) { occurrences.add(property); } } } }
Example 2
Source File: PackageScopeASTTransformation.java From groovy with Apache License 2.0 | 6 votes |
private static groovy.transform.PackageScopeTarget extractTarget(PropertyExpression expr) { Expression oe = expr.getObjectExpression(); if (oe instanceof ClassExpression) { ClassExpression ce = (ClassExpression) oe; if (ce.getType().getName().equals("groovy.transform.PackageScopeTarget")) { Expression prop = expr.getProperty(); if (prop instanceof ConstantExpression) { String propName = (String) ((ConstantExpression) prop).getValue(); try { return PackageScopeTarget.valueOf(propName); } catch(IllegalArgumentException iae) { /* ignore */ } } } } throw new GroovyBugError("Internal error during " + MY_TYPE_NAME + " processing. Annotation parameters must be of type: " + TARGET_CLASS_NAME + "."); }
Example 3
Source File: ContractInputProposalsCodeVisitorSupport.java From bonita-studio with GNU General Public License v2.0 | 6 votes |
@Override public void visitBinaryExpression(final BinaryExpression expression) { proposals = completionComputer.computeCompletionProposals(context, monitor); final BinaryExpression binaryExpression = (BinaryExpression) contentAssistContext.getPerceivedCompletionNode(); final Expression leftExpression = binaryExpression.getLeftExpression(); String multipleInputName = null; if (leftExpression instanceof PropertyExpression) { final PropertyExpression propertyExpr = (PropertyExpression) leftExpression; final Expression objectExpression = propertyExpr.getProperty(); multipleInputName = objectExpression.getText(); } else if (leftExpression instanceof VariableExpression) { multipleInputName = ((VariableExpression) leftExpression).getName(); } if (multipleInputName != null) { final ContractInput multipleInput = getInputWithName(multipleInputName, inputs); final ContractInput copy = EcoreUtil.copy(multipleInput); copy.setMultiple(false); final String fullyQualifiedType = ExpressionHelper.getContractInputReturnType(copy); if (fullyQualifiedType != null && prefix.isEmpty()) { proposals = getMethodProposals(contentAssistContext, context, inputs, prefix, multipleInputName, fullyQualifiedType); } } }
Example 4
Source File: PathFinderVisitor.java From netbeans with Apache License 2.0 | 5 votes |
@Override public void visitPropertyExpression(PropertyExpression node) { // XXX PropertyExpression has wrong offsets, e.g. 4-4 for 'this.field1 = 77' // and was never added to path, // therefore let's check if its children are wraping given position // and add it then Expression objectExpression = node.getObjectExpression(); Expression property = node.getProperty(); if (isInside(node, line, column, false)) { path.add(node); } else { boolean nodeAdded = false; if (isInside(objectExpression, line, column, false)) { path.add(node); nodeAdded = true; } if (isInside(property, line, column, false)) { if (!nodeAdded) { path.add(node); } } } objectExpression.visit(this); property.visit(this); }
Example 5
Source File: SecureASTCustomizer.java From groovy with Apache License 2.0 | 5 votes |
@Override public void visitPropertyExpression(final PropertyExpression expression) { assertExpressionAuthorized(expression); Expression receiver = expression.getObjectExpression(); final String typeName = receiver.getType().getName(); if (allowedReceivers != null && !allowedReceivers.contains(typeName)) { throw new SecurityException("Property access not allowed on [" + typeName + "]"); } else if (disallowedReceivers != null && disallowedReceivers.contains(typeName)) { throw new SecurityException("Property access not allowed on [" + typeName + "]"); } receiver.visit(this); final Expression property = expression.getProperty(); checkConstantTypeIfNotMethodNameOrProperty(property); }
Example 6
Source File: GeneralUtils.java From groovy with Apache License 2.0 | 5 votes |
/** * Copies all <tt>candidateAnnotations</tt> with retention policy {@link java.lang.annotation.RetentionPolicy#RUNTIME} * and {@link java.lang.annotation.RetentionPolicy#CLASS}. * {@link groovy.transform.Generated} annotations will be copied if {@code includeGenerated} is true. * <p> * Annotations with {@link org.codehaus.groovy.runtime.GeneratedClosure} members are not supported at present. */ public static void copyAnnotatedNodeAnnotations(final AnnotatedNode annotatedNode, final List<AnnotationNode> copied, final List<AnnotationNode> notCopied, final boolean includeGenerated) { List<AnnotationNode> annotationList = annotatedNode.getAnnotations(); for (AnnotationNode annotation : annotationList) { List<AnnotationNode> annotations = annotation.getClassNode().getAnnotations(AbstractASTTransformation.RETENTION_CLASSNODE); if (annotations.isEmpty()) continue; if (hasClosureMember(annotation)) { notCopied.add(annotation); continue; } if (!includeGenerated && annotation.getClassNode().getName().equals("groovy.transform.Generated")) { continue; } AnnotationNode retentionPolicyAnnotation = annotations.get(0); Expression valueExpression = retentionPolicyAnnotation.getMember("value"); if (!(valueExpression instanceof PropertyExpression)) continue; PropertyExpression propertyExpression = (PropertyExpression) valueExpression; boolean processAnnotation = propertyExpression.getProperty() instanceof ConstantExpression && ("RUNTIME".equals(((ConstantExpression) (propertyExpression.getProperty())).getValue()) || "CLASS".equals(((ConstantExpression) (propertyExpression.getProperty())).getValue())); if (processAnnotation) { AnnotationNode newAnnotation = new AnnotationNode(annotation.getClassNode()); for (Map.Entry<String, Expression> member : annotation.getMembers().entrySet()) { newAnnotation.addMember(member.getKey(), member.getValue()); } newAnnotation.setSourcePosition(annotatedNode); copied.add(newAnnotation); } } }
Example 7
Source File: StaticTypesBinaryExpressionMultiTypeDispatcher.java From groovy with Apache License 2.0 | 4 votes |
private void transformSpreadOnLHS(final BinaryExpression expression) { PropertyExpression spreadExpression = (PropertyExpression) expression.getLeftExpression(); Expression receiver = spreadExpression.getObjectExpression(); int counter = labelCounter.incrementAndGet(); CompileStack compileStack = controller.getCompileStack(); OperandStack operandStack = controller.getOperandStack(); // create an empty arraylist VariableExpression result = varX(this.getClass().getSimpleName() + "$spreadresult" + counter, ARRAYLIST_CLASSNODE); ConstructorCallExpression newArrayList = ctorX(ARRAYLIST_CLASSNODE); newArrayList.setNodeMetaData(DIRECT_METHOD_CALL_TARGET, ARRAYLIST_CONSTRUCTOR); Expression decl = declX(result, newArrayList); decl.visit(controller.getAcg()); // if (receiver != null) receiver.visit(controller.getAcg()); Label ifnull = compileStack.createLocalLabel("ifnull_" + counter); MethodVisitor mv = controller.getMethodVisitor(); mv.visitJumpInsn(IFNULL, ifnull); operandStack.remove(1); // receiver consumed by if() Label nonull = compileStack.createLocalLabel("nonull_" + counter); mv.visitLabel(nonull); ClassNode componentType = StaticTypeCheckingVisitor.inferLoopElementType( controller.getTypeChooser().resolveType(receiver, controller.getClassNode())); Parameter iterator = new Parameter(componentType, "for$it$" + counter); VariableExpression iteratorAsVar = varX(iterator); PropertyExpression pexp = spreadExpression instanceof AttributeExpression ? new AttributeExpression(iteratorAsVar, spreadExpression.getProperty(), true) : new PropertyExpression(iteratorAsVar, spreadExpression.getProperty(), true); pexp.setImplicitThis(spreadExpression.isImplicitThis()); pexp.setSourcePosition(spreadExpression); BinaryExpression assignment = binX(pexp, expression.getOperation(), expression.getRightExpression()); MethodCallExpression add = callX(result, "add", assignment); add.setMethodTarget(ARRAYLIST_ADD_METHOD); // for (e in receiver) { result.add(e?.method(arguments) } ForStatement stmt = new ForStatement( iterator, receiver, stmt(add) ); stmt.visit(controller.getAcg()); // else { empty list } mv.visitLabel(ifnull); // end of if/else // return result list result.visit(controller.getAcg()); }