private static boolean ensureNoInstanceFieldOrProperty(final SourceUnit source, final ClassNode parent) { boolean valid = true; for (FieldNode fieldNode : parent.getFields()) { if (!fieldNode.isStatic() && fieldNode.getLineNumber()>0) { // if <0, probably an AST transform or internal code (like generated metaclass field, ...) addUnsupportedError(fieldNode, source); valid = false; } } for (PropertyNode propertyNode : parent.getProperties()) { if (!propertyNode.isStatic() && propertyNode.getLineNumber()>0) { // if <0, probably an AST transform or internal code (like generated metaclass field, ...) addUnsupportedError(propertyNode, source); valid = false; } } return valid; }
new BinaryExpression( fe, Token.newSymbol(Types.EQUAL, fieldNode.getLineNumber(), fieldNode.getColumnNumber()), expression)); if (fieldNode.isStatic()) {
private void addFieldMetadata(Field field) { AnnotationNode ann = new AnnotationNode(nodeCache.FieldMetadata); ann.setMember(FieldMetadata.NAME, new ConstantExpression(field.getName())); ann.setMember(FieldMetadata.ORDINAL, new ConstantExpression(field.getOrdinal())); ann.setMember(FieldMetadata.LINE, new ConstantExpression(field.getAst().getLineNumber())); ann.setMember(FieldMetadata.INITIALIZER, new ConstantExpression(field.hasInitialExpression())); field.getAst().addAnnotation(ann); }
@Override public void visitField(final FieldNode node) { final boolean osc = typeCheckingContext.isInStaticContext; try { typeCheckingContext.isInStaticContext = node.isInStaticContext(); currentField = node; super.visitField(node); Expression init = node.getInitialExpression(); if (init != null) { FieldExpression left = new FieldExpression(node); BinaryExpression bexp = binX( left, Token.newSymbol("=", node.getLineNumber(), node.getColumnNumber()), init ); bexp.setSourcePosition(init); typeCheckAssignment(bexp, left, node.getOriginType(), init, getType(init)); if (init instanceof ConstructorCallExpression) { inferDiamondType((ConstructorCallExpression) init, node.getOriginType()); } } } finally { currentField = null; typeCheckingContext.isInStaticContext = osc; } }
new BinaryExpression( fe, Token.newSymbol(Types.EQUAL, fn.getLineNumber(), fn.getColumnNumber()), init)); fn.setInitialValueExpression(null);
if (field.isProtected()) { unit.addError(new SyntaxException("Cannot have protected field in a trait (" + trait.getName() + "#" + field.getName() + ")", field.getLineNumber(), field.getColumnNumber())); return;
public int compare(FieldNode o1, FieldNode o2) { return o1.getLineNumber() - o2.getLineNumber(); } });
private void completeNamedParams( List<CompletionProposal> proposals, int anchor, ConstructorCallExpression constructorCall, NamedArgumentListExpression namedArguments) { ClassNode type = constructorCall.getType(); String prefix = context.getPrefix(); for (FieldNode fieldNode : type.getFields()) { if (fieldNode.getLineNumber() < 0 || fieldNode.getColumnNumber() < 0) { continue; } String typeName = fieldNode.getType().getNameWithoutPackage(); String name = fieldNode.getName(); // If the prefix is empty, complete only missing parameters if ("".equals(prefix)) { if (isAlreadyPresent(namedArguments, name)) { continue; } // Otherwise check if the field is starting with (and not equal to) the prefix } else { if (name.equals(prefix) || !name.startsWith(prefix)) { continue; } } proposals.add(new CompletionItem.NamedParameter(typeName, name, anchor)); } }
if (field.getLineNumber() >= 0) { children.add(field);
new BinaryExpression( new FieldExpression(fieldNode), Token.newSymbol(Types.EQUAL, fieldNode.getLineNumber(), fieldNode.getColumnNumber()), expression)); if (fieldNode.isStatic()) {
new BinaryExpression( new FieldExpression(fieldNode), Token.newSymbol(Types.EQUAL, fieldNode.getLineNumber(), fieldNode.getColumnNumber()), expression)); if (fieldNode.isStatic()) {
new BinaryExpression( new FieldExpression(fieldNode), Token.newSymbol(Types.EQUAL, fieldNode.getLineNumber(), fieldNode.getColumnNumber()), expression)); if (fieldNode.isStatic()) {
/** * Add a new Violation to the list of violations found by this visitor. * Only add the violation if the node lineNumber >= 0. * * @param node - the Groovy AST Node * @param message - the message for the violation; defaults to null */ protected void addViolation(FieldNode node, String message) { if (node.getLineNumber() >= 0) { int lineNumber = AstUtil.findFirstNonAnnotationLine(node, sourceCode); String sourceLine = sourceCode.line(AstUtil.findFirstNonAnnotationLine(node, sourceCode) - 1); Violation violation = new Violation(); violation.setRule(rule); violation.setLineNumber(lineNumber); violation.setSourceLine(sourceLine); violation.setMessage(String.format( "Violation in class %s. %s", node.getOwner().getName(), message )); violations.add(violation); } }
private void addSpockFieldMetadata(FieldNode field, int ordinal) { AnnotationNode ann = new AnnotationNode(ClassHelper.make(FieldMetadata.class)); ann.setMember(FieldMetadata.NAME, new ConstantExpression(field.getName())); ann.setMember(FieldMetadata.ORDINAL, new ConstantExpression(ordinal)); ann.setMember(FieldMetadata.LINE, new ConstantExpression(field.getLineNumber())); field.addAnnotation(ann); }
new BinaryExpression( fe, Token.newSymbol(Types.EQUAL, fieldNode.getLineNumber(), fieldNode.getColumnNumber()), expression)); if (fieldNode.isStatic()) {
new BinaryExpression( fe, Token.newSymbol(Types.EQUAL, fn.getLineNumber(), fn.getColumnNumber()), init)); fn.setInitialValueExpression(null);