<commit_before>= Dev
<NAME>
2018-03-25
:type: community
:toc: macro
:icons: font

ifdef::env-github,env-browser[:outfilesuffix: .adoc]

[[closure-compiler-development]]
== Closure Compiler Development

ClojureScript has deep integration with https://github.com/google/closure-compiler[Google Closure Compiler].
Many ClojureScript features like Node / ES6 modules processing are actually provided
through Google Closure Compiler support. In these areas contribution to
ClojureScript is done by contributing directly to the Google Closure compiler
project itself.

=== Contributing to Closure Compiler

The Closure compiler team uses GitHub to manage the project and are particular
responsive to issues if they are accompanied by pull requests that provide
resolutions. In order to contribute to the Closure Compiler project you must
submit a Google Contributor Agreement.

=== Closure Compiler Development

While sparsely documented, the Closure Compiler Java code base is surprisingly
approachable. Using a free Java IDE like
https://www.jetbrains.com/idea/download/[IntelliJ Community Edition] can greatly
simply exploring and understanding the Closure Compiler source. When locating
the source of Closure Compiler bugs Java IDEs also have the added benefit of
robust step debugging tools.

Once you believe you have a fix, create branch with your fixes and then create
a test case.

==== Adding a Test Case to Closure Compiler

Find an appropriate test case file for your unit test. To test your specific
test you must first build Closure Compiler:

```
mvn clean && mvn -DskipTests -pl externs/pom.xml,pom-main.xml,pom-main-shaded.xml
```

At this point unless you need to recompile your compiler changes you can simply
compile and run your test case which takes less time. In the following replace<commit_msg>Closure contributing guide typo<commit_after>= Dev
<NAME>
2018-03-25
:type: community
:toc: macro
:icons: font

ifdef::env-github,env-browser[:outfilesuffix: .adoc]

[[closure-compiler-development]]
== Closure Compiler Development

ClojureScript has deep integration with https://github.com/google/closure-compiler[Google Closure Compiler].
Many ClojureScript features like Node / ES6 modules processing are actually provided
through Google Closure Compiler support. In these areas contribution to
ClojureScript is done by contributing directly to the Google Closure compiler
project itself.

=== Contributing to Closure Compiler

The Closure compiler team uses GitHub to manage the project and are particularly
responsive to issues if they are accompanied by pull requests that provide
resolutions. In order to contribute to the Closure Compiler project you must
submit a Google Contributor Agreement.

=== Closure Compiler Development

While sparsely documented, the Closure Compiler Java code base is surprisingly
approachable. Using a free Java IDE like
https://www.jetbrains.com/idea/download/[IntelliJ Community Edition] can greatly
simply exploring and understanding the Closure Compiler source. When locating
the source of Closure Compiler bugs Java IDEs also have the added benefit of
robust step debugging tools.

Once you believe you have a fix, create branch with your fixes and then create
a test case.

==== Adding a Test Case to Closure Compiler

Find an appropriate test case file for your unit test. To test your specific
test you must first build Closure Compiler:

```
mvn clean && mvn -DskipTests -pl externs/pom.xml,pom-main.xml,pom-main-shaded.xml
```

At this point unless you need to recompile your compiler changes you can simply
compile and run your test case which takes less time. In the following replace
{'fraction_non_alphanumeric': 0.05211190345584202, 'fraction_numerical': 0.004936917169500823, 'mean_word_length': 5.078333333333333, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 4, 'lorem ipsum': 0, 'www.': 2, 'xml': 6}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 6, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '792634', 'n_tokens_mistral': 979, 'n_tokens_neox': 903, 'n_words': 478}