Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1485)

Unified Diff: Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/AstUtil.java

Issue 137553005: DevTools: [JsDocValidator] Refactor JsDoc annotation checkers (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Address comments from sergeyv Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/AstUtil.java
diff --git a/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/AstUtil.java b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/AstUtil.java
index a85680b86f6827f49c961018c22f9598840b581b..e930753e756c595a39c5cb44173d26b6c2f51aff 100644
--- a/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/AstUtil.java
+++ b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/AstUtil.java
@@ -3,10 +3,14 @@ package org.chromium.devtools.jsdoc.checks;
import com.google.javascript.rhino.head.Token;
import com.google.javascript.rhino.head.ast.Assignment;
import com.google.javascript.rhino.head.ast.AstNode;
+import com.google.javascript.rhino.head.ast.Comment;
import com.google.javascript.rhino.head.ast.FunctionNode;
+import com.google.javascript.rhino.head.ast.ObjectProperty;
public class AstUtil {
+ private static final String PROTOTYPE_SUFFIX = ".prototype";
+
static boolean hasParentOfType(AstNode node, int tokenType) {
AstNode parent = node.getParent();
if (parent == null) {
@@ -21,6 +25,10 @@ public class AstUtil {
return nameNode;
}
+ if (AstUtil.hasParentOfType(functionNode, Token.COLON)) {
+ return ((ObjectProperty) functionNode.getParent()).getLeft();
+ }
+
if (AstUtil.hasParentOfType(functionNode, Token.ASSIGN)) {
Assignment assignment = (Assignment) functionNode.getParent();
if (assignment.getRight() == functionNode) {
@@ -30,5 +38,55 @@ public class AstUtil {
return null;
}
+ static String getTypeNameFromPrototype(String value) {
+ return value.substring(0, value.length() - PROTOTYPE_SUFFIX.length());
+ }
+
+ static boolean isPrototypeName(String typeName) {
+ return typeName.endsWith(PROTOTYPE_SUFFIX);
+ }
+
+ static AstNode getAssignedTypeNameNode(Assignment assignment) {
+ AstNode typeNameNode = assignment.getLeft();
+ if (typeNameNode.getType() != Token.GETPROP && typeNameNode.getType() != Token.NAME) {
+ return null;
+ }
+ return typeNameNode;
+ }
+
+ static Comment getJsDocNode(AstNode node) {
+ if (node.getType() == Token.FUNCTION) {
+ return getJsDocNode((FunctionNode) node);
+ } else {
+ return node.getJsDocNode();
+ }
+ }
+
+ static Comment getJsDocNode(FunctionNode functionNode) {
+ Comment jsDocNode = functionNode.getJsDocNode();
+ if (jsDocNode != null) {
+ return jsDocNode;
+ }
+
+ // reader.onloadend = function() {...}
+ if (hasParentOfType(functionNode, Token.ASSIGN)) {
+ Assignment assignment = (Assignment) functionNode.getParent();
+ if (assignment.getRight() == functionNode) {
+ jsDocNode = assignment.getJsDocNode();
+ if (jsDocNode != null) {
+ return jsDocNode;
+ }
+ }
+ }
+
+ if (hasParentOfType(functionNode, Token.COLON)) {
+ jsDocNode = ((ObjectProperty) functionNode.getParent()).getLeft().getJsDocNode();
+ if (jsDocNode != null) {
+ return jsDocNode;
+ }
+ }
+ return null;
+ }
+
private AstUtil() {}
}

Powered by Google App Engine
This is Rietveld 408576698