Skip to content
This repository has been archived by the owner on Sep 16, 2022. It is now read-only.

Dead code fixes tests for component using AsyncPipe #1952

Open
daniel-v opened this issue Jan 21, 2021 · 0 comments
Open

Dead code fixes tests for component using AsyncPipe #1952

daniel-v opened this issue Jan 21, 2021 · 0 comments

Comments

@daniel-v
Copy link

daniel-v commented Jan 21, 2021

This one has a bit of a story! Basically what I have observed is that having a bit of specially prepared dead code influences the compilation/optimization process of dart2js in such a way that it makes things work. I expect my code to work without the dead code but it doesn't. Without further ado, repro code here

Repro steps:

  1. grab a stagehand angular starter project
  2. throw in the test and the build.yaml file from gist
  3. pub run build_runner test -r -- -p chrome

-r command line argument is important. DDC works fine.

There are a number of things that must be present in order for this to happen:

  1. Component should use AsyncPipe on a special Stream
  2. The implementation of that Stream must be "mockito-like" - overriding noSuchMethod
  3. dart2js compiler must have -O1 or above optimization level

Until this point, component test fails, though I think it should pass. To fix it, there are 2 approaches:

  1. add a bit of dead code like in the gist
  2. use -O0 optimization level for dart2js

My expectation:
Both reachable tests pass without dead code

What happens:
Without dead code, the component test fails, though it shouldn't

Env

  • Dart SDK version: 2.10.4 (stable) (Wed Nov 11 13:35:58 2020 +0100) on "linux_x64"
  • Angular 5.3, 6

Uhm, so I'm wondering, is it an angular_test bug or did I stumble onto something compiler related? (There is a 3rd option: I'm a idiot and I'm missing something)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant