Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add property reflection to notify path and friends calls #5495

Merged

Conversation

ChadKillingsworth
Copy link
Contributor

This is a forward port of #5472 and #5491.

There were no linting errors, but that's as much as I can test. I don't currently have a robust project to test Polymer 3 against with closure-compiler renaming.

…losure-compiler renaming.

Also quotes the getStyle method of the custom style method since ShadyCSS references the method quoted.
@@ -75,7 +75,7 @@ export class CustomStyle extends HTMLElement {
* @export
* @return {HTMLStyleElement} This element's light-DOM `<style>`
*/
getStyle() {
'getStyle'() {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was this change intentional? It causes an error @export is not supported on this expression.

@@ -75,7 +75,7 @@ export class CustomStyle extends HTMLElement {
* @export
* @return {HTMLStyleElement} This element's light-DOM `<style>`
*/
'getStyle'() {
['getStyle']() {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But why do we need this at all? What's wrong wrong with getStyle() and the @export we already have?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point, export should be sufficient. Will revert back to getStyle()

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@export requires both closure-library and the --generate_exports flag to be used with the compiler making it a not-great solution.

There are two options:

  1. Remove the @export annotation and quote the property directly.
  2. Manually export the method with a CustomStyle.prototype['getStyle'] = CustomStyle.prototype.getStyle statement right below the class definition.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All of our internal users have --generate_exports enabled. We're also advocating for it to become enabled by default. So I think that's our preferred solution. Any reason you don't want to turn on the flag?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes it requires closure library. That's a non starter for most external projects.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, seems odd. I thought it was just a JS compiler pass. Maybe it's like JSCompiler_renameProperty and just requires any implementation of the functions that it generates, since the compiler replaces the call anyway?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's very odd. The compiler pass literally adds goog.exportSymbol calls but requires the definition of that method to be included as source. Unlike property reflection, the source actually is present in the final output.

The definition for that method could be injected like a polyfill, but nobody has done that work.

@kevinpschaaf kevinpschaaf merged commit 798dfc6 into Polymer:master Mar 6, 2019
@ChadKillingsworth ChadKillingsworth deleted the polymer3-closure-compiler-fixes branch March 6, 2019 15:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants