private void addSpecMetadata(Spec spec) { AnnotationNode ann = new AnnotationNode(nodeCache.SpecMetadata); String pathname = spec.getAst().getModule().getContext().getName(); String filename = new File(pathname).getName(); ann.setMember(SpecMetadata.FILENAME, new ConstantExpression(filename)); ann.setMember(SpecMetadata.LINE, new ConstantExpression(spec.getAst().getLineNumber())); spec.getAst().addAnnotation(ann); }
private static void checkTraitAllowed(final ClassNode bottomTrait, final SourceUnit unit) { ClassNode superClass = bottomTrait.getSuperClass(); if (superClass==null || ClassHelper.OBJECT_TYPE.equals(superClass)) return; if (!Traits.isTrait(superClass)) { unit.addError(new SyntaxException("A trait can only inherit from another trait", superClass.getLineNumber(), superClass.getColumnNumber())); } }
new SyntaxErrorMessage(new SyntaxException(txt, node.getLineNumber(), node.getColumnNumber(), node.getLastLineNumber(), node.getLastColumnNumber()), nodeSource) );
/** * Creates a location which goes from the given node's starting position to at most one line after. */ public static Location createClassDefinitionLocation(URI uri, ClassNode node) { Range range; // This takes care of the edge case where the class is defined on one line. if (node.getLineNumber() == node.getLastLineNumber()) { range = Ranges.createZeroBasedRange(node.getLineNumber(), node.getColumnNumber(), node.getLastLineNumber(), node.getLastColumnNumber()); } else { range = Ranges.createZeroBasedRange(node.getLineNumber(), node.getColumnNumber(), Math.min(node.getLineNumber() + 1, node.getLastLineNumber()), Math.min(1, node.getLastColumnNumber())); } return new Location(uri.toString(), range); }
private void addClassNodeOccurrences(ClassNode visitedNode, ClassNode findingNode) { final String findingName = ElementUtils.getTypeName(findingNode); final ClassNode superClass = visitedNode.getUnresolvedSuperClass(false); final ClassNode[] interfaces = visitedNode.getInterfaces(); // Check if the caret is on the ClassNode itself if (findingName.equals(visitedNode.getName())) { occurrences.add(new FakeASTNode(visitedNode, visitedNode.getNameWithoutPackage())); } // Check if the caret is on the parent type if (superClass.getLineNumber() > 0 && superClass.getColumnNumber() > 0) { if (findingName.equals(superClass.getName())) { occurrences.add(new FakeASTNode(superClass, superClass.getNameWithoutPackage())); } } // Check all implemented interfaces for (ClassNode interfaceNode : interfaces) { if (interfaceNode.getLineNumber() > 0 && interfaceNode.getColumnNumber() > 0) { if (findingName.equals(interfaceNode.getName())) { occurrences.add(new FakeASTNode(interfaceNode, interfaceNode.getNameWithoutPackage())); } } } // Check all class level annotations for (AnnotationNode annotation : visitedNode.getAnnotations(findingNode)) { addAnnotationOccurrences(annotation, findingNode); } }
new SyntaxErrorMessage(new SyntaxException(txt, node.getLineNumber(), node.getColumnNumber()), nodeSource) );
new SyntaxErrorMessage(new SyntaxException(txt, node.getLineNumber(), node.getColumnNumber()), nodeSource) );
new SyntaxErrorMessage(new SyntaxException(txt, node.getLineNumber(), node.getColumnNumber()), nodeSource) );
new SyntaxErrorMessage(new SyntaxException(txt, node.getLineNumber(), node.getColumnNumber()), nodeSource) );