Skip to content

Commit

Permalink
Handle @closurePrimitive in JSDocInfoPrinter and JSDocInfo equivalence
Browse files Browse the repository at this point in the history
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=241407239
  • Loading branch information
lauraharker authored and blickly committed Apr 3, 2019
1 parent 3fba753 commit f64cd02
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/com/google/javascript/jscomp/JSDocInfoPrinter.java
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ public String print(JSDocInfo info) {
// polymer
// polymerBehavior
// mixinFunction
// closurePrimitive
parts.add("/**");

if (info.isExterns()) {
Expand Down Expand Up @@ -257,6 +258,10 @@ public String print(JSDocInfo info) {
parts.add("@customElement");
}

if (info.getClosurePrimitiveId() != null) {
parts.add("@closurePrimitive {" + info.getClosurePrimitiveId() + "}");
}

parts.add("*/");

StringBuilder sb = new StringBuilder();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,7 @@ private static JsDocInfoParser getParser(String toParse) {
Config.builder()
.setLanguageMode(LanguageMode.ECMASCRIPT3)
.setStrictMode(Config.StrictMode.SLOPPY)
.setClosurePrimitiveNames(ImmutableSet.of("testPrimitive"))
.build();
JsDocInfoParser parser =
new JsDocInfoParser(
Expand Down
1 change: 1 addition & 0 deletions src/com/google/javascript/rhino/JSDocInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -621,6 +621,7 @@ public static boolean areEquivalent(JSDocInfo jsDoc1, JSDocInfo jsDoc2) {
&& Objects.equals(jsDoc1.getType(), jsDoc2.getType())
&& Objects.equals(jsDoc1.getVersion(), jsDoc2.getVersion())
&& Objects.equals(jsDoc1.getVisibility(), jsDoc2.getVisibility())
&& Objects.equals(jsDoc1.getClosurePrimitiveId(), jsDoc2.getClosurePrimitiveId())
&& jsDoc1.bitset == jsDoc2.bitset;
}

Expand Down
5 changes: 5 additions & 0 deletions test/com/google/javascript/jscomp/JSDocInfoPrinterTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -400,6 +400,11 @@ public void testNoCollapse() {
testSame("/** @nocollapse */ ");
}

@Test
public void testClosurePrimitive() {
testSame("/** @closurePrimitive {testPrimitive} */ ");
}

private void testSame(String jsdoc) {
test(jsdoc, jsdoc);
}
Expand Down
12 changes: 12 additions & 0 deletions test/com/google/javascript/rhino/JSDocInfoTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -645,6 +645,18 @@ public void testContainsDeclaration_extends() {
assertThat(info.containsDeclaration()).isTrue();
}

@Test
public void testClosurePrimitiveId_affectsEquality() {
JSDocInfo assertsFailJSDoc = new JSDocInfo();
assertsFailJSDoc.setClosurePrimitiveId("asserts.fail");

JSDocInfo otherInfo = new JSDocInfo();
assertThat(JSDocInfo.areEquivalent(assertsFailJSDoc, otherInfo)).isFalse();

otherInfo.setClosurePrimitiveId("asserts.fail");
assertThat(JSDocInfo.areEquivalent(assertsFailJSDoc, otherInfo)).isTrue();
}

/** Gets the type expression for a simple type name. */
private JSTypeExpression fromString(String s) {
return new JSTypeExpression(Node.newString(s), "");
Expand Down

0 comments on commit f64cd02

Please sign in to comment.