tree b7912b160e327650fb1731029bb9a4297d7c8485
parent 6a014580cac3576a0bc832f18d9ef828938b05c4
author Shahms King <shahms@shahms.com> 1560553786 -0700
committer GitHub <noreply@github.com> 1560553786 -0700
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJdBCk6CRBK7hj4Ov3rIwAAdHIIAFAaO+M6BIOrAS/Xqn9057xA
 4qA7PjssVn9074vxsPWCJNX5dtNkkt4nXWEXCivvc3XJssrPMz8IILHoOxCyrbB7
 aq+7H6nF0XvvF8qS+HvIXJJAq7dIyA1KnpYRjwB2KSMAfa9aZ4Qmx40L7dyB1gt2
 UaHDa2JMfGOg66TO++Eer2yUVM5znk2VLXHhQAkKjdrw33JZRtoiIlFOfu/tYCqJ
 I1MWRzSRjN2g8xN17b5XEmyq65CUhYs5NUOGgl9hM0y8x+cRY6uGjptMVGbwEjhR
 tsj7KEf5S4jXsz3vXYmVnuekJChqhbwr813IL4EADb6bdHs63Um9BQfPQQx2Q08=
 =z9E2
 -----END PGP SIGNATURE-----
 

 feat(extraction): initial support for extracting openjdk11 (#3821)

* chore: rename openjdk extractor to openjdk8

* feat(extraction): initial java wrapper script for openjdk11

* feat(extraction): initial support for extracting openjdk11

There is still work to be done in the extractor and indexer for
supporting modular builds, but this will successfully produce .kzip
files for most of openjdk11.

* chore(extraction): fix lint complaints

* chore: rename openjdk extractor to openjdk8

* feat(extraction): initial java wrapper script for openjdk11

* feat(typescript_indexer): Getter/Setter entries (#3784)

* wrap plugin indexer in try/catch block (#3812)

* chore: explicity mark py_binary version (#3703)

* build: disable incompatible_list_based_execution_strategy_selection (#3817)

* feat(typescript_indexer): VName schema compliance for constructors (#3785)

* add constructor spec impl

* Ensure members declared in a ctor are scoped to the class. Add tests for this.

* Remove getter/setter code and conflicts

* Remove comment artifact, make class properties emit "childof" entries of the class.

* parameters in constructors and functions are children of those functions

* use more idiomatic type check

* docs(typescript_indexer): document separate compilation (#3806)

This describes how separate compilation works for Google's TS builds.
It's not obvious from this code that this is how things work; for
example, in non-Google TS builds, the "compilation unit" that TS works
with is generally all source code in the app all at once.

(As you might expect, that is costly; recent versions of TypeScript have
been working on adding some more incremental compilation support, but
I'm not clear on how exactly it works.)

* fix(objc): Log extractor errors (#3818)

Bazel captures logs below error. Increase our log level so we actually see the logs during a bazel build.

* feat(extraction): initial support for extracting openjdk11

There is still work to be done in the extractor and indexer for
supporting modular builds, but this will successfully produce .kzip
files for most of openjdk11.

* chore(extraction): fix lint complaints

* chore(extraction): address comments

* chore(cxx_extractor): clang format

* chore(extraction): address comments, remove moved go source

* chore(extraction): use absolute path in example

* chore(extraction): make path to JDK a flag

* chore(extraction): address comments, move most logic to extract command

* chore(extraction): address further comment
