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

Dead code fixes tests for component using AsyncPipe #1952

@daniel-v

Description

@daniel-v

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions