Sdk: Dart 2.5 analyzer is confused by parametric methods on parametric classes

Created on 12 Sep 2019  Â·  25Comments  Â·  Source: dart-lang/sdk

The code below does not analyze cleanly in DartPad running against Dart 2.5.0. We have seen a similar issue in our code that uses the built_redux package, presumably because it contains this pattern.

Note that the top-level function call analyzes just fine. Also, if the type parameter is removed from the Rectifier class the method call analyzes cleanly as well, even though T is never actually used, so that's a little confusing.

The error message is below.

Couldn't infer type parameter 'S extends State'. Tried to infer 'FooState' for 'S extends State' which doesn't work: Type parameter 'S extends State' declared to extend 'State>'. The type 'FooState' was inferred from: Parameter 'state' declared as 'S' but argument is 'FooState'. Consider passing explicit type argument(s) to the generic.

If I try to specify values for the type parameters, as suggested, I see a different error:

'FooState' doesn't extend 'State'.

class State<S extends State<S, B>, B extends Builder<S, B>> {}

class Builder<S extends State<S, B>, B extends Builder<S, B>> {}

class FooState implements State<FooState, FooBuilder> {}

class FooBuilder implements Builder<FooState, FooBuilder> {}

// Calling this analyzes cleanly
void rectify<S extends State<S, B>, B extends Builder<S, B>>(
  S state,
  B builder,
) {
  print('barf');
}

// If we get rid of this type parameter and update the instantiation the error goes away
class Rectifier<T> {
  // Calling this produces a static error
  void rectify<S extends State<S, B>, B extends Builder<S, B>>(
    S state,
    B builder,
  ) {
    print('barf');
  }
}

void main() {
  rectify(new FooState(), new FooBuilder()); // No static error

  final rectifier = new Rectifier<Null>();
  // Adding `<FooState, FooBuilder>` changes the error
  rectifier.rectify(new FooState(), new FooBuilder()); // Static error
}

Metadata...

$ dart --version
Dart VM version: 2.5.0 (Fri Sep 6 20:39:27 2019 +0200) on "macos_x64"

$ dartanalyzer --version
dartanalyzer version 2.5.0
area-analyzer type-bug

Most helpful comment

I verified this fixes the analysis errors for us. Any chance this could be in a 2.5.1 patch release?

All 25 comments

@kevmoo @vsmenon FYI This is preventing us from upgrading to Dart 2.5. Any chance of a 2.5.1 with a fix for this in it?

Did this regress? What was the last version it checked on?

@stereotype441

@vsmenon it works fine on 2.4.1

I'd also like to add that unit tests that exercise the problematic code in built_redux pass on the vm and chrome on dart 2.5 even though there are analysis errors shown in my IDE.

edit:
tests do fail with dart2js tho:

pub run build_runner test --delete-conflicting-outputs passes
pub run build_runner test --delete-conflicting-outputs -- -p chrome passes
pub run build_runner test --release --delete-conflicting-outputs -- -p chrome fails

I'm not sure if dart2js has the same issue as analyzer, but there might be a similar type substitution issue in CFE.

It looks like that CL merged, what's next?

Since the CL landed, I'm marking this bug as fixed. @robbecker-wf you're welcme to try running the analyzer from bleeding edge sources if you want to confirm that the fix works from you. Otherwise the fix should show up in the dev channel within roughly a week, and then be released as part of Dart 2.6.

I verified this fixes the analysis errors for us. Any chance this could be in a 2.5.1 patch release?

@robbecker-wf - are there still issues with dart2js? (See @davidmarne 's comment above.)

Correction .. I checked Marne's comment about built_redux https://github.com/dart-lang/sdk/issues/38365#issuecomment-532289864

I verified that the analyzer issues were resolved, but it looks like there are failures on 2.5.0 and dart sdk master branch (as of 4 days ago)
Dart 2.5.0 & Dart VM version: 2.6.0-edge.f6883ff7263d7be76797ee8beeb13d7215f784e7 (Thu Sep 19 16:16:20 2019 +0000) on "macos_x64"

pub run build_runner test --delete-conflicting-outputs passes
pub run build_runner test --delete-conflicting-outputs -- -p chrome fails w/ 1 test
pub run build_runner test --release --delete-conflicting-outputs -- -p chrome fails w/ 4 tests

Dart 2.4.1 all tests pass with all
edit: /CC @vsmenon

Do you have a log handy on the failures? Are they coming from dart2js?

On 2.6 when running pub run build_runner test --delete-conflicting-outputs -- -p chrome
this test fails here
https://github.com/davidmarne/built_redux/blob/master/test/unit/action_generics_test.dart#L42

with this output

00:03 +7 -1: test/unit/action_generics_test.dart: action generics all generic types [E]
  NoSuchMethodError: '<Unexpected Null Value>'
  method not found
  Receiver: null
  Arguments: []
  dart:sdk_internal                delayed
  action_generics_test.dart 42:17  <fn>
  dart:sdk_internal                _async
  action_generics_test.dart 25:31  <fn>
  ===== asynchronous gap ===========================
  action_generics_test.dart 25:31  <fn>

No failures when running a dart2js build directly
pub run build_runner build --release --delete-conflicting-outputs test

FYI https://github.com/davidmarne/built_redux is an open source repo, so it's possible for anyone to try to reproduce errors with those commands listed.

(Switched build.yaml to compile with CSP and -O1 to see if I get any better info)

➜  built_redux git:(master) ✗ pub run build_runner test --release --delete-conflicting-outputs -- -p chrome --verbose-trace
[INFO] Generating build script completed, took 287ms
[INFO] Creating build script snapshot... completed, took 16.8s
[INFO] Building new asset graph completed, took 1.1s
[INFO] Checking for unexpected pre-existing outputs. completed, took 4ms
[INFO] build_web_compilers:entrypoint on test/unit/action_generics_test.dart.browser_test.dart:Running dart2js with --csp -O1 --packages=.package-edaa94602e2c6da51aab438c242a7c85 -otest/unit/action_generics_test.dart.browser_test.dart.js test/unit/action_generics_test.dart.browser_test.dart
[INFO] build_web_compilers:entrypoint on test/unit/collection_reducer_builders_test.dart.browser_test.dart:Running dart2js with --csp -O1 --packages=.package-33974ef1776fe822d873bd45bb11e482 -otest/unit/collection_reducer_builders_test.dart.browser_test.dart.js test/unit/collection_reducer_builders_test.dart.browser_test.dart
[INFO] build_web_compilers:entrypoint on test/unit/inheritance_test.dart.browser_test.dart:Running dart2js with --csp -O1 --packages=.package-dd36e5cb3edd7634c40abd8ea322a905 -otest/unit/inheritance_test.dart.browser_test.dart.js test/unit/inheritance_test.dart.browser_test.dart
[INFO] build_web_compilers:entrypoint on test/unit/store_test.dart.browser_test.dart:Running dart2js with --csp -O1 --packages=.package-312b8a7bbce1e91d7064a2fdeab3a70a -otest/unit/store_test.dart.browser_test.dart.js test/unit/store_test.dart.browser_test.dart
[INFO] build_web_compilers:entrypoint on test/unit/inheritance_test.dart.browser_test.dart:Dart2Js finished with:

Compiled 9,286,384 characters Dart to 1,038,864 characters JavaScript in 8.23 seconds
Dart file test/unit/inheritance_test.dart.browser_test.dart compiled to JavaScript: test/unit/inheritance_test.dart.browser_test.dart.js

[INFO] build_web_compilers:entrypoint on test/unit/action_generics_test.dart.browser_test.dart:Dart2Js finished with:

Compiled 9,286,747 characters Dart to 1,047,864 characters JavaScript in 8.32 seconds
Dart file test/unit/action_generics_test.dart.browser_test.dart compiled to JavaScript: test/unit/action_generics_test.dart.browser_test.dart.js

[INFO] build_web_compilers:entrypoint on test/unit/store_test.dart.browser_test.dart:Dart2Js finished with:

Compiled 9,293,856 characters Dart to 1,095,628 characters JavaScript in 8.47 seconds
Dart file test/unit/store_test.dart.browser_test.dart compiled to JavaScript: test/unit/store_test.dart.browser_test.dart.js

[INFO] build_web_compilers:entrypoint on test/unit/collection_reducer_builders_test.dart.browser_test.dart:Dart2Js finished with:

Compiled 9,292,108 characters Dart to 1,129,173 characters JavaScript in 8.62 seconds
Dart file test/unit/collection_reducer_builders_test.dart.browser_test.dart compiled to JavaScript: test/unit/collection_reducer_builders_test.dart.browser_test.dart.js

[INFO] build_web_compilers:entrypoint on test/unit/middleware_test.dart.browser_test.dart:Running dart2js with --csp -O1 --packages=.package-034ec13fc9232ab748a14d5d01bbf220 -otest/unit/middleware_test.dart.browser_test.dart.js test/unit/middleware_test.dart.browser_test.dart
[INFO] build_web_compilers:entrypoint on test/unit/middleware_test.dart.browser_test.dart:Running dart2js with --csp -O1 --packages=.package-86c502a9c7d6dafa7421c600a07aa50d -otest/unit/nested_models_test.dart.browser_test.dart.js test/unit/nested_models_test.dart.browser_test.dart
[INFO] build_web_compilers:entrypoint on test/unit/middleware_test.dart.browser_test.dart:Running dart2js with --csp -O1 --packages=.package-35ab53fc3a555bea7bce564c9ca1d5b3 -otest/unit/built_redux_test_utils_test.dart.browser_test.dart.js test/unit/built_redux_test_utils_test.dart.browser_test.dart
[INFO] build_web_compilers:entrypoint on test/unit/built_redux_test_utils_test.dart.browser_test.dart:Dart2Js finished with:

Compiled 9,290,481 characters Dart to 1,043,277 characters JavaScript in 5.67 seconds
Dart file test/unit/built_redux_test_utils_test.dart.browser_test.dart compiled to JavaScript: test/unit/built_redux_test_utils_test.dart.browser_test.dart.js

[INFO] build_web_compilers:entrypoint on test/unit/nested_models_test.dart.browser_test.dart:Dart2Js finished with:

Compiled 9,290,986 characters Dart to 1,049,617 characters JavaScript in 5.69 seconds
Dart file test/unit/nested_models_test.dart.browser_test.dart compiled to JavaScript: test/unit/nested_models_test.dart.browser_test.dart.js

[INFO] build_web_compilers:entrypoint on test/unit/middleware_test.dart.browser_test.dart:Dart2Js finished with:

Compiled 9,291,200 characters Dart to 1,065,945 characters JavaScript in 5.78 seconds
Dart file test/unit/middleware_test.dart.browser_test.dart compiled to JavaScript: test/unit/middleware_test.dart.browser_test.dart.js

[INFO] Running build completed, took 25.3s
[INFO] Caching finalized dependency graph completed, took 133ms
[INFO] Creating merged output dir `/var/folders/6d/d_rqcgj15dj_2gghvk2px2dr0000gm/T/build_runner_testyZ3P1d/` completed, took 20ms
[INFO] Writing asset manifest completed, took 0ms
[INFO] Succeeded after 25.5s with 1469 outputs (4754 actions)
Running tests...

00:01 +3 -1: test/unit/middleware_test.dart: middleware 1 middleware doubles count and updates state [E]
  NoSuchMethodError: method not found: 'name' on null
  middleware_test.dart.browser_test.dart.js 1615:33    Object._isSubtype
  middleware_test.dart.browser_test.dart.js 1503:14    Object.assertIsSubtype
  middleware_test.dart.browser_test.dart.js 26372:9    <fn>
  middleware_test.dart.browser_test.dart.js 101:35     Object.holder.<computed>
  middleware_test.dart.browser_test.dart.js 25272:47   main_closure_setup.call$1$numMiddleware
  middleware_test.dart.browser_test.dart.js 25276:19   main_closure_setup.call$0
  middleware_test.dart.browser_test.dart.js 25298:33   <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  middleware_test.dart.browser_test.dart.js 11491:12   _wrapJsFunctionForAsync_closure.call$2
  middleware_test.dart.browser_test.dart.js 22026:51   StackZoneSpecification__registerBinaryCallback__closure.call$0
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23246:29   Invoker_waitForOutstandingCallbacks_closure.call$0
  middleware_test.dart.browser_test.dart.js 3136:16    StaticClosure._rootRun
  middleware_test.dart.browser_test.dart.js 13471:158  _CustomZone.run$1$1
  middleware_test.dart.browser_test.dart.js 3305:89    Object._runZoned
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 22885:29   Declarer_test_closure.call$0
  middleware_test.dart.browser_test.dart.js 23411:116  <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  middleware_test.dart.browser_test.dart.js 11491:12   _wrapJsFunctionForAsync_closure.call$2
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23402:29   Invoker__onRun____closure.call$0
  middleware_test.dart.browser_test.dart.js 11784:50   Future_Future_closure.call$0
  middleware_test.dart.browser_test.dart.js 21949:16   StackZoneSpecification._stack_zone_specification$_run$1$2
  middleware_test.dart.browser_test.dart.js 21989:26   StackZoneSpecification__registerCallback_closure.call$0
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13498:174  _CustomZone.registerCallback$1$1
  middleware_test.dart.browser_test.dart.js 13435:71   _CustomZone.bindCallbackGuarded$1
  middleware_test.dart.browser_test.dart.js 3109:44    Object.Timer_Timer
  middleware_test.dart.browser_test.dart.js 2704:9     Object.Future_Future
  middleware_test.dart.browser_test.dart.js 23362:17   <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23351:29   Invoker__onRun___closure.call$0
  middleware_test.dart.browser_test.dart.js 3136:16    StaticClosure._rootRun
  middleware_test.dart.browser_test.dart.js 13471:158  _CustomZone.run$1$1
  middleware_test.dart.browser_test.dart.js 3305:89    Object._runZoned

  NoSuchMethodError: method not found: 'dispose$0' on null
  middleware_test.dart.browser_test.dart.js 25282:25   main__closure.call$0
  middleware_test.dart.browser_test.dart.js 2715:30    Object.Future_Future$sync
  middleware_test.dart.browser_test.dart.js 24323:9    errorsDontStopTest_closure.call$0
  middleware_test.dart.browser_test.dart.js 23257:51   <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  middleware_test.dart.browser_test.dart.js 11491:12   _wrapJsFunctionForAsync_closure.call$2
  middleware_test.dart.browser_test.dart.js 22026:51   StackZoneSpecification__registerBinaryCallback__closure.call$0
  middleware_test.dart.browser_test.dart.js 21949:16   StackZoneSpecification._stack_zone_specification$_run$1$2
  middleware_test.dart.browser_test.dart.js 22017:26   StackZoneSpecification__registerBinaryCallback_closure.call$2
  middleware_test.dart.browser_test.dart.js 2657:20    Object._asyncStartSync
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 2732:26    Object.Future_Future$sync
  middleware_test.dart.browser_test.dart.js 24323:9    errorsDontStopTest_closure.call$0
  middleware_test.dart.browser_test.dart.js 23257:51   <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  middleware_test.dart.browser_test.dart.js 11491:12   _wrapJsFunctionForAsync_closure.call$2
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23246:29   Invoker_waitForOutstandingCallbacks_closure.call$0
  middleware_test.dart.browser_test.dart.js 3136:16    StaticClosure._rootRun
  middleware_test.dart.browser_test.dart.js 13471:158  _CustomZone.run$1$1
  middleware_test.dart.browser_test.dart.js 3305:89    Object._runZoned
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23184:38   Invoker._runTearDowns$0
  middleware_test.dart.browser_test.dart.js 968:32     tear_off.<fn>
  middleware_test.dart.browser_test.dart.js 3136:16    StaticClosure._rootRun
  middleware_test.dart.browser_test.dart.js 13471:158  _CustomZone.run$1$1
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23402:29   Invoker__onRun____closure.call$0
  middleware_test.dart.browser_test.dart.js 11784:50   Future_Future_closure.call$0
  middleware_test.dart.browser_test.dart.js 21949:16   StackZoneSpecification._stack_zone_specification$_run$1$2
  middleware_test.dart.browser_test.dart.js 21989:26   StackZoneSpecification__registerCallback_closure.call$0
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13498:174  _CustomZone.registerCallback$1$1
  middleware_test.dart.browser_test.dart.js 13435:71   _CustomZone.bindCallbackGuarded$1
  middleware_test.dart.browser_test.dart.js 3109:44    Object.Timer_Timer
  middleware_test.dart.browser_test.dart.js 2704:9     Object.Future_Future
  middleware_test.dart.browser_test.dart.js 23362:17   <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23351:29   Invoker__onRun___closure.call$0
  middleware_test.dart.browser_test.dart.js 3136:16    StaticClosure._rootRun
  middleware_test.dart.browser_test.dart.js 13471:158  _CustomZone.run$1$1
  middleware_test.dart.browser_test.dart.js 3305:89    Object._runZoned

00:01 +7 -2: test/unit/middleware_test.dart: middleware 2 middlewares doubles count twice and updates state [E]
  NoSuchMethodError: method not found: 'call$1' on null
  middleware_test.dart.browser_test.dart.js 18521:235  Store_closure0.call$1
  middleware_test.dart.browser_test.dart.js 10245:22   MappedListIterable.elementAt$1
  middleware_test.dart.browser_test.dart.js 10073:21   MappedListIterable.reduce$1
  middleware_test.dart.browser_test.dart.js 18444:176  Store$4$middleware
  middleware_test.dart.browser_test.dart.js 7706:10    Object.Store$
  middleware_test.dart.browser_test.dart.js 25273:29   main_closure_setup.call$1$numMiddleware
  middleware_test.dart.browser_test.dart.js 25323:33   <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  middleware_test.dart.browser_test.dart.js 11491:12   _wrapJsFunctionForAsync_closure.call$2
  middleware_test.dart.browser_test.dart.js 22026:51   StackZoneSpecification__registerBinaryCallback__closure.call$0
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23246:29   Invoker_waitForOutstandingCallbacks_closure.call$0
  middleware_test.dart.browser_test.dart.js 3136:16    StaticClosure._rootRun
  middleware_test.dart.browser_test.dart.js 13471:158  _CustomZone.run$1$1
  middleware_test.dart.browser_test.dart.js 3305:89    Object._runZoned
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 22885:29   Declarer_test_closure.call$0
  middleware_test.dart.browser_test.dart.js 23411:116  <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  middleware_test.dart.browser_test.dart.js 11491:12   _wrapJsFunctionForAsync_closure.call$2
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23402:29   Invoker__onRun____closure.call$0
  middleware_test.dart.browser_test.dart.js 11784:50   Future_Future_closure.call$0
  middleware_test.dart.browser_test.dart.js 21949:16   StackZoneSpecification._stack_zone_specification$_run$1$2
  middleware_test.dart.browser_test.dart.js 21989:26   StackZoneSpecification__registerCallback_closure.call$0
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13498:174  _CustomZone.registerCallback$1$1
  middleware_test.dart.browser_test.dart.js 13435:71   _CustomZone.bindCallbackGuarded$1
  middleware_test.dart.browser_test.dart.js 3109:44    Object.Timer_Timer
  middleware_test.dart.browser_test.dart.js 2704:9     Object.Future_Future
  middleware_test.dart.browser_test.dart.js 23362:17   <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23351:29   Invoker__onRun___closure.call$0
  middleware_test.dart.browser_test.dart.js 3136:16    StaticClosure._rootRun
  middleware_test.dart.browser_test.dart.js 13471:158  _CustomZone.run$1$1
  middleware_test.dart.browser_test.dart.js 3305:89    Object._runZoned

  NoSuchMethodError: method not found: 'dispose$0' on null
  middleware_test.dart.browser_test.dart.js 25282:25   main__closure.call$0
  middleware_test.dart.browser_test.dart.js 2715:30    Object.Future_Future$sync
  middleware_test.dart.browser_test.dart.js 24323:9    errorsDontStopTest_closure.call$0
  middleware_test.dart.browser_test.dart.js 23257:51   <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  middleware_test.dart.browser_test.dart.js 11491:12   _wrapJsFunctionForAsync_closure.call$2
  middleware_test.dart.browser_test.dart.js 22026:51   StackZoneSpecification__registerBinaryCallback__closure.call$0
  middleware_test.dart.browser_test.dart.js 21949:16   StackZoneSpecification._stack_zone_specification$_run$1$2
  middleware_test.dart.browser_test.dart.js 22017:26   StackZoneSpecification__registerBinaryCallback_closure.call$2
  middleware_test.dart.browser_test.dart.js 2657:20    Object._asyncStartSync
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 2732:26    Object.Future_Future$sync
  middleware_test.dart.browser_test.dart.js 24323:9    errorsDontStopTest_closure.call$0
  middleware_test.dart.browser_test.dart.js 23257:51   <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  middleware_test.dart.browser_test.dart.js 11491:12   _wrapJsFunctionForAsync_closure.call$2
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23246:29   Invoker_waitForOutstandingCallbacks_closure.call$0
  middleware_test.dart.browser_test.dart.js 3136:16    StaticClosure._rootRun
  middleware_test.dart.browser_test.dart.js 13471:158  _CustomZone.run$1$1
  middleware_test.dart.browser_test.dart.js 3305:89    Object._runZoned
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23184:38   Invoker._runTearDowns$0
  middleware_test.dart.browser_test.dart.js 968:32     tear_off.<fn>
  middleware_test.dart.browser_test.dart.js 3136:16    StaticClosure._rootRun
  middleware_test.dart.browser_test.dart.js 13471:158  _CustomZone.run$1$1
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23402:29   Invoker__onRun____closure.call$0
  middleware_test.dart.browser_test.dart.js 11784:50   Future_Future_closure.call$0
  middleware_test.dart.browser_test.dart.js 21949:16   StackZoneSpecification._stack_zone_specification$_run$1$2
  middleware_test.dart.browser_test.dart.js 21989:26   StackZoneSpecification__registerCallback_closure.call$0
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13498:174  _CustomZone.registerCallback$1$1
  middleware_test.dart.browser_test.dart.js 13435:71   _CustomZone.bindCallbackGuarded$1
  middleware_test.dart.browser_test.dart.js 3109:44    Object.Timer_Timer
  middleware_test.dart.browser_test.dart.js 2704:9     Object.Future_Future
  middleware_test.dart.browser_test.dart.js 23362:17   <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23351:29   Invoker__onRun___closure.call$0
  middleware_test.dart.browser_test.dart.js 3136:16    StaticClosure._rootRun
  middleware_test.dart.browser_test.dart.js 13471:158  _CustomZone.run$1$1
  middleware_test.dart.browser_test.dart.js 3305:89    Object._runZoned

00:01 +8 -3: test/unit/middleware_test.dart: middleware combine works with tripleIt [E]
  NoSuchMethodError: method not found: 'call$1' on null
  middleware_test.dart.browser_test.dart.js 18521:235  Store_closure0.call$1
  middleware_test.dart.browser_test.dart.js 10245:22   MappedListIterable.elementAt$1
  middleware_test.dart.browser_test.dart.js 10073:21   MappedListIterable.reduce$1
  middleware_test.dart.browser_test.dart.js 18444:176  Store$4$middleware
  middleware_test.dart.browser_test.dart.js 7706:10    Object.Store$
  middleware_test.dart.browser_test.dart.js 25273:29   main_closure_setup.call$1$numMiddleware
  middleware_test.dart.browser_test.dart.js 25276:19   main_closure_setup.call$0
  middleware_test.dart.browser_test.dart.js 25380:33   <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  middleware_test.dart.browser_test.dart.js 11491:12   _wrapJsFunctionForAsync_closure.call$2
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23246:29   Invoker_waitForOutstandingCallbacks_closure.call$0
  middleware_test.dart.browser_test.dart.js 3136:16    StaticClosure._rootRun
  middleware_test.dart.browser_test.dart.js 13471:158  _CustomZone.run$1$1
  middleware_test.dart.browser_test.dart.js 3305:89    Object._runZoned
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 22885:29   Declarer_test_closure.call$0
  middleware_test.dart.browser_test.dart.js 23411:116  <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  middleware_test.dart.browser_test.dart.js 11491:12   _wrapJsFunctionForAsync_closure.call$2
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23402:29   Invoker__onRun____closure.call$0
  middleware_test.dart.browser_test.dart.js 11784:50   Future_Future_closure.call$0
  middleware_test.dart.browser_test.dart.js 21949:16   StackZoneSpecification._stack_zone_specification$_run$1$2
  middleware_test.dart.browser_test.dart.js 21989:26   StackZoneSpecification__registerCallback_closure.call$0
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13498:174  _CustomZone.registerCallback$1$1
  middleware_test.dart.browser_test.dart.js 13435:71   _CustomZone.bindCallbackGuarded$1
  middleware_test.dart.browser_test.dart.js 3109:44    Object.Timer_Timer
  middleware_test.dart.browser_test.dart.js 2704:9     Object.Future_Future
  middleware_test.dart.browser_test.dart.js 23362:17   <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23351:29   Invoker__onRun___closure.call$0
  middleware_test.dart.browser_test.dart.js 3136:16    StaticClosure._rootRun
  middleware_test.dart.browser_test.dart.js 13471:158  _CustomZone.run$1$1
  middleware_test.dart.browser_test.dart.js 3305:89    Object._runZoned

  NoSuchMethodError: method not found: 'dispose$0' on null
  middleware_test.dart.browser_test.dart.js 25282:25   main__closure.call$0
  middleware_test.dart.browser_test.dart.js 2715:30    Object.Future_Future$sync
  middleware_test.dart.browser_test.dart.js 24323:9    errorsDontStopTest_closure.call$0
  middleware_test.dart.browser_test.dart.js 23257:51   <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  middleware_test.dart.browser_test.dart.js 11491:12   _wrapJsFunctionForAsync_closure.call$2
  middleware_test.dart.browser_test.dart.js 22026:51   StackZoneSpecification__registerBinaryCallback__closure.call$0
  middleware_test.dart.browser_test.dart.js 21949:16   StackZoneSpecification._stack_zone_specification$_run$1$2
  middleware_test.dart.browser_test.dart.js 22017:26   StackZoneSpecification__registerBinaryCallback_closure.call$2
  middleware_test.dart.browser_test.dart.js 2657:20    Object._asyncStartSync
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 2732:26    Object.Future_Future$sync
  middleware_test.dart.browser_test.dart.js 24323:9    errorsDontStopTest_closure.call$0
  middleware_test.dart.browser_test.dart.js 23257:51   <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  middleware_test.dart.browser_test.dart.js 11491:12   _wrapJsFunctionForAsync_closure.call$2
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23246:29   Invoker_waitForOutstandingCallbacks_closure.call$0
  middleware_test.dart.browser_test.dart.js 3136:16    StaticClosure._rootRun
  middleware_test.dart.browser_test.dart.js 13471:158  _CustomZone.run$1$1
  middleware_test.dart.browser_test.dart.js 3305:89    Object._runZoned
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23184:38   Invoker._runTearDowns$0
  middleware_test.dart.browser_test.dart.js 968:32     tear_off.<fn>
  middleware_test.dart.browser_test.dart.js 3136:16    StaticClosure._rootRun
  middleware_test.dart.browser_test.dart.js 13471:158  _CustomZone.run$1$1
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23402:29   Invoker__onRun____closure.call$0
  middleware_test.dart.browser_test.dart.js 11784:50   Future_Future_closure.call$0
  middleware_test.dart.browser_test.dart.js 21949:16   StackZoneSpecification._stack_zone_specification$_run$1$2
  middleware_test.dart.browser_test.dart.js 21989:26   StackZoneSpecification__registerCallback_closure.call$0
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13498:174  _CustomZone.registerCallback$1$1
  middleware_test.dart.browser_test.dart.js 13435:71   _CustomZone.bindCallbackGuarded$1
  middleware_test.dart.browser_test.dart.js 3109:44    Object.Timer_Timer
  middleware_test.dart.browser_test.dart.js 2704:9     Object.Future_Future
  middleware_test.dart.browser_test.dart.js 23362:17   <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23351:29   Invoker__onRun___closure.call$0
  middleware_test.dart.browser_test.dart.js 3136:16    StaticClosure._rootRun
  middleware_test.dart.browser_test.dart.js 13471:158  _CustomZone.run$1$1
  middleware_test.dart.browser_test.dart.js 3305:89    Object._runZoned

00:01 +10 -4: test/unit/middleware_test.dart: middleware combineNested works with SubCounter doubleIt [E]
  NoSuchMethodError: method not found: 'call$1' on null
  middleware_test.dart.browser_test.dart.js 18521:235  Store_closure0.call$1
  middleware_test.dart.browser_test.dart.js 10245:22   MappedListIterable.elementAt$1
  middleware_test.dart.browser_test.dart.js 10073:21   MappedListIterable.reduce$1
  middleware_test.dart.browser_test.dart.js 18444:176  Store$4$middleware
  middleware_test.dart.browser_test.dart.js 7706:10    Object.Store$
  middleware_test.dart.browser_test.dart.js 25273:29   main_closure_setup.call$1$numMiddleware
  middleware_test.dart.browser_test.dart.js 25276:19   main_closure_setup.call$0
  middleware_test.dart.browser_test.dart.js 25405:33   <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  middleware_test.dart.browser_test.dart.js 11491:12   _wrapJsFunctionForAsync_closure.call$2
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23246:29   Invoker_waitForOutstandingCallbacks_closure.call$0
  middleware_test.dart.browser_test.dart.js 3136:16    StaticClosure._rootRun
  middleware_test.dart.browser_test.dart.js 13471:158  _CustomZone.run$1$1
  middleware_test.dart.browser_test.dart.js 3305:89    Object._runZoned
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 22885:29   Declarer_test_closure.call$0
  middleware_test.dart.browser_test.dart.js 23411:116  <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  middleware_test.dart.browser_test.dart.js 11491:12   _wrapJsFunctionForAsync_closure.call$2
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23402:29   Invoker__onRun____closure.call$0
  middleware_test.dart.browser_test.dart.js 11784:50   Future_Future_closure.call$0
  middleware_test.dart.browser_test.dart.js 21949:16   StackZoneSpecification._stack_zone_specification$_run$1$2
  middleware_test.dart.browser_test.dart.js 21989:26   StackZoneSpecification__registerCallback_closure.call$0
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13498:174  _CustomZone.registerCallback$1$1
  middleware_test.dart.browser_test.dart.js 13435:71   _CustomZone.bindCallbackGuarded$1
  middleware_test.dart.browser_test.dart.js 3109:44    Object.Timer_Timer
  middleware_test.dart.browser_test.dart.js 2704:9     Object.Future_Future
  middleware_test.dart.browser_test.dart.js 23362:17   <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23351:29   Invoker__onRun___closure.call$0
  middleware_test.dart.browser_test.dart.js 3136:16    StaticClosure._rootRun
  middleware_test.dart.browser_test.dart.js 13471:158  _CustomZone.run$1$1
  middleware_test.dart.browser_test.dart.js 3305:89    Object._runZoned

  NoSuchMethodError: method not found: 'dispose$0' on null
  middleware_test.dart.browser_test.dart.js 25282:25   main__closure.call$0
  middleware_test.dart.browser_test.dart.js 2715:30    Object.Future_Future$sync
  middleware_test.dart.browser_test.dart.js 24323:9    errorsDontStopTest_closure.call$0
  middleware_test.dart.browser_test.dart.js 23257:51   <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  middleware_test.dart.browser_test.dart.js 11491:12   _wrapJsFunctionForAsync_closure.call$2
  middleware_test.dart.browser_test.dart.js 22026:51   StackZoneSpecification__registerBinaryCallback__closure.call$0
  middleware_test.dart.browser_test.dart.js 21949:16   StackZoneSpecification._stack_zone_specification$_run$1$2
  middleware_test.dart.browser_test.dart.js 22017:26   StackZoneSpecification__registerBinaryCallback_closure.call$2
  middleware_test.dart.browser_test.dart.js 2657:20    Object._asyncStartSync
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 2732:26    Object.Future_Future$sync
  middleware_test.dart.browser_test.dart.js 24323:9    errorsDontStopTest_closure.call$0
  middleware_test.dart.browser_test.dart.js 23257:51   <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  middleware_test.dart.browser_test.dart.js 11491:12   _wrapJsFunctionForAsync_closure.call$2
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23246:29   Invoker_waitForOutstandingCallbacks_closure.call$0
  middleware_test.dart.browser_test.dart.js 3136:16    StaticClosure._rootRun
  middleware_test.dart.browser_test.dart.js 13471:158  _CustomZone.run$1$1
  middleware_test.dart.browser_test.dart.js 3305:89    Object._runZoned
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23184:38   Invoker._runTearDowns$0
  middleware_test.dart.browser_test.dart.js 968:32     tear_off.<fn>
  middleware_test.dart.browser_test.dart.js 3136:16    StaticClosure._rootRun
  middleware_test.dart.browser_test.dart.js 13471:158  _CustomZone.run$1$1
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23402:29   Invoker__onRun____closure.call$0
  middleware_test.dart.browser_test.dart.js 11784:50   Future_Future_closure.call$0
  middleware_test.dart.browser_test.dart.js 21949:16   StackZoneSpecification._stack_zone_specification$_run$1$2
  middleware_test.dart.browser_test.dart.js 21989:26   StackZoneSpecification__registerCallback_closure.call$0
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13498:174  _CustomZone.registerCallback$1$1
  middleware_test.dart.browser_test.dart.js 13435:71   _CustomZone.bindCallbackGuarded$1
  middleware_test.dart.browser_test.dart.js 3109:44    Object.Timer_Timer
  middleware_test.dart.browser_test.dart.js 2704:9     Object.Future_Future
  middleware_test.dart.browser_test.dart.js 23362:17   <fn>
  middleware_test.dart.browser_test.dart.js 2692:15    _wrapJsFunctionForAsync_closure.$protected
  ===== asynchronous gap ===========================
  middleware_test.dart.browser_test.dart.js 13514:222  _CustomZone.registerBinaryCallback$3$1
  middleware_test.dart.browser_test.dart.js 2700:30    Object._wrapJsFunctionForAsync
  middleware_test.dart.browser_test.dart.js 23351:29   Invoker__onRun___closure.call$0
  middleware_test.dart.browser_test.dart.js 3136:16    StaticClosure._rootRun
  middleware_test.dart.browser_test.dart.js 13471:158  _CustomZone.run$1$1
  middleware_test.dart.browser_test.dart.js 3305:89    Object._runZoned

00:01 +18 -4: Some tests failed.
➜  built_redux git:(master) ✗

@vsmenon Does that help at all?

@sigmundch - can you take a look? There may be a dart2js regression here.

@scheglov is checking whether it's possible to cherry-pick the analyzer fix back to 2.5.0 (54a1bd9624d81217d40160ddb699f05a16d87358). It's possible that there will be trouble because the fix was made after the switch to Summary2 format, and 2.5.0 likely still uses Summary1. He will update with details once we know whether it's feasible.

@robbecker-wf it appears there are different issues with ddc and dart2js.

  • with dart2js: it appears that the dart2js tests on this package have been failing for a while. In particular, I got the same error in all of 2.4.1, 2.5.0, and 2.6.0-dev.2.0 when running tests with --release. Given that this is not a new failure, my guess is that this is not a regression. I haven't looked in detail, but it is likely that the test itself or code in the package needs fixing. The test that fails is middleware_test as you shown above.

  • with ddc: it appears ddc works fine in 2.4.1, 2.5.0, 2.6.0-dev.0.0, 2.6.0-dev.1.0, but action_generics_test starts to fail in 2.6.0-dev.2.0. This does appear like a regression, so I'll continue working on bisecting it. I'll keep you posted on what I find.

Oh, right .. I might have misspoke. Looks like on 2.4.1 dart2js there are the same 4 failures
pub run build_runner test --release --delete-conflicting-outputs -- -p chrome
@davidmarne

@vsmenon - it seems the regression here is a different issue related to the change for const/overriden fields. The regression appeared with ce6f40b, went away with the revert, but reappeared with the second attempt in a6cc7b9

Filed #38549 to track this issue separately

CL for 2.5.0 https://dart-review.googlesource.com/c/sdk/+/118660

@athomas is this sufficient for you to make the patch release, or do you need us to file a cherry-pick request?

@stereotype441 @scheglov Please do file the cherry-pick request (for visibility and to have a separate thread to discuss the cherry-pick) and also include what the changelog should say about this fix.

@stereotype441 @scheglov Please do file the cherry-pick request (for visibility and to have a separate thread to discuss the cherry-pick) and also include what the changelog should say about this fix.

Ok, merge request filed: https://github.com/dart-lang/sdk/issues/38567

Was this page helpful?
0 / 5 - 0 ratings

Related issues

xster picture xster  Â·  3Comments

DartBot picture DartBot  Â·  3Comments

rinick picture rinick  Â·  3Comments

brooth picture brooth  Â·  3Comments

55555Mohit55555 picture 55555Mohit55555  Â·  3Comments