| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package com.google.javascript.jscomp; | 5 package com.google.javascript.jscomp; |
| 6 | 6 |
| 7 import com.google.javascript.jscomp.NodeTraversal.AbstractPostOrderCallback; | 7 import com.google.javascript.jscomp.NodeTraversal.AbstractPostOrderCallback; |
| 8 import com.google.javascript.rhino.IR; | 8 import com.google.javascript.rhino.IR; |
| 9 import com.google.javascript.rhino.JSDocInfoBuilder; | 9 import com.google.javascript.rhino.JSDocInfoBuilder; |
| 10 import com.google.javascript.rhino.JSTypeExpression; | 10 import com.google.javascript.rhino.JSTypeExpression; |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 | 116 |
| 117 private void visitPropertyDefinition(Node call, Node parent) { | 117 private void visitPropertyDefinition(Node call, Node parent) { |
| 118 Node callee = call.getFirstChild(); | 118 Node callee = call.getFirstChild(); |
| 119 String target = call.getChildAtIndex(1).getQualifiedName(); | 119 String target = call.getChildAtIndex(1).getQualifiedName(); |
| 120 if (callee.matchesQualifiedName(CR_DEFINE_PROPERTY) && !target.endsWith(
".prototype")) { | 120 if (callee.matchesQualifiedName(CR_DEFINE_PROPERTY) && !target.endsWith(
".prototype")) { |
| 121 target += ".prototype"; | 121 target += ".prototype"; |
| 122 } | 122 } |
| 123 | 123 |
| 124 Node property = call.getChildAtIndex(2); | 124 Node property = call.getChildAtIndex(2); |
| 125 | 125 |
| 126 Node getPropNode = NodeUtil.newQualifiedNameNode(compiler.getCodingConve
ntion(), | 126 Node getPropNode = NodeUtil.newQName( |
| 127 target + "." + property.getString()).srcrefTree(call); | 127 compiler, target + "." + property.getString()).srcrefTree(call); |
| 128 | 128 |
| 129 if (callee.matchesQualifiedName(CR_DEFINE_PROPERTY)) { | 129 if (callee.matchesQualifiedName(CR_DEFINE_PROPERTY)) { |
| 130 setJsDocWithType(getPropNode, getTypeByCrPropertyKind(call.getChildA
tIndex(3))); | 130 setJsDocWithType(getPropNode, getTypeByCrPropertyKind(call.getChildA
tIndex(3))); |
| 131 } else { | 131 } else { |
| 132 setJsDocWithType(getPropNode, new Node(Token.QMARK)); | 132 setJsDocWithType(getPropNode, new Node(Token.QMARK)); |
| 133 } | 133 } |
| 134 | 134 |
| 135 Node definitionNode = IR.exprResult(getPropNode).srcref(parent); | 135 Node definitionNode = IR.exprResult(getPropNode).srcref(parent); |
| 136 | 136 |
| 137 parent.getParent().addChildAfter(definitionNode, parent); | 137 parent.getParent().addChildAfter(definitionNode, parent); |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 226 return node.isExprResult() && (getPropNode = node.getFirstChild()).isGet
Prop() && | 226 return node.isExprResult() && (getPropNode = node.getFirstChild()).isGet
Prop() && |
| 227 getPropNode.getQualifiedName().startsWith(prototype + "."); | 227 getPropNode.getQualifiedName().startsWith(prototype + "."); |
| 228 } | 228 } |
| 229 | 229 |
| 230 private boolean maybeAddPublicDeclaration(String field, Set<String> publicAP
IStrings, | 230 private boolean maybeAddPublicDeclaration(String field, Set<String> publicAP
IStrings, |
| 231 String className, Node jsDocSourceNode, Node scope, Node exprResult)
{ | 231 String className, Node jsDocSourceNode, Node scope, Node exprResult)
{ |
| 232 boolean changesMade = false; | 232 boolean changesMade = false; |
| 233 if (field.endsWith("_")) { | 233 if (field.endsWith("_")) { |
| 234 String publicName = field.substring(0, field.length() - 1); | 234 String publicName = field.substring(0, field.length() - 1); |
| 235 if (publicAPIStrings.contains(publicName)) { | 235 if (publicAPIStrings.contains(publicName)) { |
| 236 Node methodDeclaration = NodeUtil.newQualifiedNameNode( | 236 Node methodDeclaration = NodeUtil.newQName(compiler, className +
"." + publicName); |
| 237 compiler.getCodingConvention(), className + "." + public
Name); | |
| 238 if (jsDocSourceNode.getJSDocInfo() != null) { | 237 if (jsDocSourceNode.getJSDocInfo() != null) { |
| 239 methodDeclaration.setJSDocInfo(jsDocSourceNode.getJSDocInfo(
)); | 238 methodDeclaration.setJSDocInfo(jsDocSourceNode.getJSDocInfo(
)); |
| 240 scope.addChildBefore( | 239 scope.addChildBefore( |
| 241 IR.exprResult(methodDeclaration).srcrefTree(exprResu
lt), | 240 IR.exprResult(methodDeclaration).srcrefTree(exprResu
lt), |
| 242 exprResult); | 241 exprResult); |
| 243 changesMade = true; | 242 changesMade = true; |
| 244 } else { | 243 } else { |
| 245 compiler.report(JSError.make(jsDocSourceNode, CR_MAKE_PUBLIC
_HAS_NO_JSDOC)); | 244 compiler.report(JSError.make(jsDocSourceNode, CR_MAKE_PUBLIC
_HAS_NO_JSDOC)); |
| 246 } | 245 } |
| 247 publicAPIStrings.remove(publicName); | 246 publicAPIStrings.remove(publicName); |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 441 parent.putBooleanProp(Node.FREE_CALL, false); | 440 parent.putBooleanProp(Node.FREE_CALL, false); |
| 442 } | 441 } |
| 443 | 442 |
| 444 parent.replaceChild(n, newNode); | 443 parent.replaceChild(n, newNode); |
| 445 } | 444 } |
| 446 } | 445 } |
| 447 } | 446 } |
| 448 | 447 |
| 449 private Node buildQualifiedName(Node internalName) { | 448 private Node buildQualifiedName(Node internalName) { |
| 450 String externalName = this.exports.get(internalName.getString()); | 449 String externalName = this.exports.get(internalName.getString()); |
| 451 return NodeUtil.newQualifiedNameNode(compiler.getCodingConvention(), | 450 return NodeUtil.newQName(compiler, this.namespaceName + "." + extern
alName).srcrefTree( |
| 452 this.namespaceName + "." + externalName).srcrefTree(internal
Name); | 451 internalName); |
| 453 } | 452 } |
| 454 } | 453 } |
| 455 } | 454 } |
| OLD | NEW |