Chromium Code Reviews| Index: Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/MethodAnnotationChecker.java |
| diff --git a/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/MethodAnnotationChecker.java b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/MethodAnnotationChecker.java |
| index a2edafa3a6812cc3999a422b93f50632070f7918..f35e2985847220a39e590b8d774323efa75f1f46 100644 |
| --- a/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/MethodAnnotationChecker.java |
| +++ b/Source/devtools/scripts/jsdoc-validator/src/org/chromium/devtools/jsdoc/checks/MethodAnnotationChecker.java |
| @@ -40,39 +40,40 @@ public final class MethodAnnotationChecker extends ContextTrackingChecker { |
| } |
| private void handleFunction(Node functionNode) { |
| - Node parametersNode = NodeUtil.getFunctionParameters(functionNode); |
| - int actualParamCount = parametersNode.getChildCount(); |
| + FunctionRecord function = getState().getCurrentFunctionRecord(); |
| + if (function == null) { |
| + return; |
| + } |
| + int actualParamCount = function.parameterNames.size(); |
|
apavlov
2014/10/17 13:21:20
woot
dgozman
2014/10/17 13:59:06
Inlined.
|
| if (actualParamCount == 0) { |
| return; |
| } |
| - JSDocInfo jsDocInfo = NodeUtil.getBestJSDocInfo(functionNode); |
| - String[] nonAnnotatedParams = getNonAnnotatedParamData(parametersNode, jsDocInfo); |
| + String[] nonAnnotatedParams = getNonAnnotatedParamData(function); |
| if (nonAnnotatedParams.length > 0 && actualParamCount != nonAnnotatedParams.length) { |
| - reportErrorAtOffset(jsDocInfo.getOriginalCommentPosition(), |
| + reportErrorAtOffset(function.info.getOriginalCommentPosition(), |
| String.format( |
| "No @param JSDoc tag found for parameters: [%s]", |
| Joiner.on(',').join(nonAnnotatedParams))); |
| } |
| } |
| - private String[] getNonAnnotatedParamData(Node params, JSDocInfo info) { |
| - if (info == null) { |
| + private String[] getNonAnnotatedParamData(FunctionRecord function) { |
| + if (function.info == null) { |
| return new String[0]; |
| } |
| Set<String> formalParamNames = new HashSet<>(); |
| - for (int i = 0, childCount = params.getChildCount(); i < childCount; ++i) { |
| - Node paramNode = params.getChildAtIndex(i); |
| - String paramName = getContext().getNodeText(paramNode); |
| + for (int i = 0; i < function.parameterNames.size(); ++i) { |
| + String paramName = function.parameterNames.get(i); |
| if (!formalParamNames.add(paramName)) { |
| - reportErrorAtNodeStart(paramNode, |
| + reportErrorAtNodeStart(function.functionNode, |
| String.format("Duplicate function argument name: %s", paramName)); |
| } |
| } |
| - Matcher m = PARAM_PATTERN.matcher(info.getOriginalCommentString()); |
| + Matcher m = PARAM_PATTERN.matcher(function.info.getOriginalCommentString()); |
| while (m.find()) { |
| String paramType = m.group(1); |
| if (paramType == null) { |
| - reportErrorAtOffset(info.getOriginalCommentPosition() + m.start(2), |
| + reportErrorAtOffset(function.info.getOriginalCommentPosition() + m.start(2), |
| String.format( |
| "Invalid @param annotation found -" |
| + " should be \"@param {<type>} paramName\"")); |