Skip to content

🏗 Refactor transform-log-asserts#24028

Merged
rsimha merged 1 commit intoampproject:masterfrom
jridgewell:refactor-log-assertions
Aug 19, 2019
Merged

🏗 Refactor transform-log-asserts#24028
rsimha merged 1 commit intoampproject:masterfrom
jridgewell:refactor-log-assertions

Conversation

@jridgewell
Copy link
Copy Markdown
Contributor

@jridgewell jridgewell commented Aug 17, 2019

The only big change here is now we'll try to statically analyze assertions.

  • If we're asserting a type and we know that the argument is not of that type, we rewrite to a throw expression
  • Else if we're asserting truthiness and the argument is falsey, we rewrite to a throw expression

This is to better support stubbed out methods, eg, layers:

class Resources {
  layersStuff() {
    devAssert(this.layersEnabled_);
    // lots of code that can be DCE'd when layers is statically disabled
  }
}

Fixes #23960.

The only big change here is now we'll try to statically analyze assertions.

- If we're asserting a type and we know that the argument is not of that type, we rewrite to a throw expression
- Else if we're assertiong truthiness and the argument is falsey, we rewrite to a throw expression

This is to better support stubbed out methods, eg, layers:

```js
class Resources {
  layersStuff() {
    devAssert(this.layersEnabled_);
    // lots of code that can be DCE'd when layers is statically disabled
  }
}
```
Copy link
Copy Markdown
Contributor

@rsimha rsimha left a comment

Choose a reason for hiding this comment

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

I tested this PR locally after removing AmpPass.java, and am still seeing the number of instances of assert in v0.js increase from 20 to 80. Happy to chat offline to make sure we're on the same page.

@jridgewell jridgewell force-pushed the refactor-log-assertions branch from 2e45987 to cbde1a9 Compare August 19, 2019 18:16
@jridgewell
Copy link
Copy Markdown
Contributor Author

That's due to

if (isSinglePass) {
applied.push(localPlugin('transform-amp-asserts'));
}
.

Copy link
Copy Markdown
Contributor

@rsimha rsimha left a comment

Choose a reason for hiding this comment

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

You're right. Removing if (isSinglePass) and deleting AmpPass.java brings down the number of asserts from 80 to 30. (You said the additional 10 are intentional.)

This PR LGTM based on the testing I did . Will allow @erwinmombay and @choumx review the transform code.

@jridgewell jridgewell closed this Aug 19, 2019
@jridgewell jridgewell reopened this Aug 19, 2019
@rsimha rsimha merged commit 45f40c8 into ampproject:master Aug 19, 2019
@jridgewell jridgewell deleted the refactor-log-assertions branch August 19, 2019 22:52
westonruter added a commit to westonruter/amphtml that referenced this pull request Aug 20, 2019
* 'master' of github.com:ampproject/amphtml: (32 commits)
  ✨ Make tweet id a bindable attribute (ampproject#23953)
  🏗 Update Local AMP extension to allow custom base URLs (ampproject#24029)
  🏗 Improve serving from non-localhost host (ampproject#24066)
  Preventing half pixels. (ampproject#24050)
  Update callout-vendors.js (ampproject#23218)
  🏗 Fixes to `check-package-manager.js` (ampproject#24060)
  Rename AMP_MODE to __AMP_MODE. (ampproject#24052)
  Story media performance metrics. (ampproject#23962)
  Updating Story amp-sidebar width documentation. (ampproject#23894)
  Fixes race condition in amp-video-iframe (ampproject#24033)
  Rename ampExtendedElements to __AMP_EXTENDED_ELEMENTS (ampproject#24056)
  🏗🚮 Enable property inlining (ampproject#24053)
  ✨amp-ads: Added optional params for Directadvert network (ampproject#23724)
  <amp-experiment> style mutation fix and improvment (ampproject#23669)
  🐛 Allow http protocol for noscript > img fallbacks for parity with amp-img (ampproject#21686)
  🏗 Refactor transform-log-asserts (ampproject#24028)
  Automatically preconnect to source origins on page loads. (ampproject#24045)
  Support visibility API in the ampdoc (ampproject#23799)
  Amphtml visual tests should use relative path against root (ampproject#24042)
  FIX: check all fields' dirtiness on AMP form init (ampproject#23978)
  ...
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.

Not all assert calls are being removed from v0.js by babel transforms

3 participants