This repository was archived by the owner on Feb 22, 2018. It is now read-only.
This repository was archived by the owner on Feb 22, 2018. It is now read-only.
Can't watch methods #999
Closed
Description
See chirayuk/angular.dart@issue_999^...issue_999 for the repro.
Basically, in scope_spec.dart
, if you add:
class Foo {
bar(x) => x+1;
}
…
it('should watch closures', (RootScope rootScope, Logger log) {
rootScope.context['foo'] = new Foo();
rootScope.context['func'] = null;
rootScope.watch('foo.bar', (v, _) { rootScope.context['func'] = v; });
rootScope.watch('func(1)', (v, o) => log([v, o]));
rootScope.apply();
expect(log).toEqual([[null, null], [2, null]]);
});
you'll get the stack trace
Chrome 34.0.1847 (Mac OS X 10.9.2) scope watch/digest should watch closures FAILED
Test failed: Caught Closure call with mismatched arguments: function 'DynamicFieldGetterFactory.method.<anonymous closure>'
NoSuchMethodError: incorrect number of arguments passed to method named 'DynamicFieldGetterFactory.method.<anonymous closure>'
Receiver: Closure: (List, Map) => dynamic
Tried calling: DynamicFieldGetterFactory.method.<anonymous closure>(Instance of 'Foo')
Found: DynamicFieldGetterFactory.method.<anonymous closure>(args, namedArgs)
#0 Object.noSuchMethod (dart:core-patch/object_patch.dart:45)
#1 DirtyCheckingRecord.object= (package:angular/change_detection/dirty_checking_change_detector.dart:465:78)
#2 _FieldHandler.acceptValue (package:angular/change_detection/watch_group.dart:630:17)
#3 WatchGroup.addFieldWatch (package:angular/change_detection/watch_group.dart:171:29)
#4 FieldReadAST.setupWatch (package:angular/change_detection/ast.dart:67:31)
#5 WatchGroup.watch.<anonymous closure> (package:angular/change_detection/watch_group.dart:144:40)
#6 _HashMap.putIfAbsent (dart:collection-patch/collection_patch.dart:124)
#7 WatchGroup.watch (package:angular/change_detection/watch_group.dart:143:27)
#8 Scope.watch (package:angular/core/scope.dart:240:31)
#9 main.<anonymous closure>.<anonymous closure>.<anonymous closure> (/Users/chirayu/work/angular.dart/test/core/scope_spec.dart:1308:24)
#10 _LocalInstanceMirror._invoke (dart:mirrors-patch/mirrors_impl.dart:440)
#11 _LocalInstanceMirror.invoke (dart:mirrors-patch/mirrors_impl.dart:436)
#12 _LocalClosureMirror.apply (dart:mirrors-patch/mirrors_impl.dart:466)
#13 DynamicInjector.invoke (package:di/dynamic_injector.dart:97:20)
#14 _SpecInjector.inject (package:angular/mock/test_injection.dart:58:22)
#15 inject.<anonymous closure> (package:angular/mock/test_injection.dart:100:44)
#16 _rootRun (dart:async/zone.dart:723)
#17 _ZoneDelegate.run (dart:async/zone.dart:453)
#18 _CustomizedZone.run (dart:async/zone.dart:663)
#19 runZoned (dart:async/zone.dart:954)
#20 _syncOuter.<anonymous closure> (package:angular/mock/zone.dart:227:22)
#21 _withSetup.<anonymous closure> (/Users/chirayu/work/angular.dart/test/jasmine_syntax.dart:13:14)
#22 _run.<anonymous closure> (package:unittest/src/test_case.dart:102:27)
#23 _rootRunUnary (dart:async/zone.dart:730)
#24 _ZoneDelegate.runUnary (dart:async/zone.dart:462)
#25 _CustomizedZone.runUnary (dart:async/zone.dart:667)
#26 _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:488)
#27 _Future._propagateToListeners (dart:async/future_impl.dart:571)
#28 _Future._completeWithValue (dart:async/future_impl.dart:331)
#29 _Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:393)
#30 _rootRun (dart:async/zone.dart:723)
#31 _ZoneDelegate.run (dart:async/zone.dart:453)
#32 _CustomizedZone.run (dart:async/zone.dart:663)
#33 _BaseZone.runGuarded (dart:async/zone.dart:574)
#34 _BaseZone.bindCallback.<anonymous closure> (dart:async/zone.dart:599)
#35 _asyncRunCallbackLoop (dart:async/schedule_microtask.dart:23)
#36 _asyncRunCallback (dart:async/schedule_microtask.dart:32)
#37 _handleMutation (file:///Volumes/data/b/build/slave/dartium-mac-full-dev/build/src/dart/tools/dom/src/native_DOMImplementation.dart:588)
DECLARED AT:#0 inject (package:angular/mock/test_injection.dart:97:5)
#1 _injectify (/Users/chirayu/work/angular.dart/test/_specs.dart:236:25)
#2 iit (/Users/chirayu/work/angular.dart/test/_specs.dart:244:53)
#3 main.<anonymous closure>.<anonymous closure> (/Users/chirayu/work/angular.dart/test/core/scope_spec.dart:1305:10)
#4 describe.<anonymous closure> (/Users/chirayu/work/angular.dart/test/jasmine_syntax.dart:62:9)
#5 group (package:unittest/unittest.dart:396:9)
#6 describe (/Users/chirayu/work/angular.dart/test/jasmine_syntax.dart:60:15)
#7 describe (/Users/chirayu/work/angular.dart/test/_specs.dart:248:46)
#8 main.<anonymous closure> (/Users/chirayu/work/angular.dart/test/core/scope_spec.dart:1009:13)
#9 describe.<anonymous closure> (/Users/chirayu/work/angular.dart/test/jasmine_syntax.dart:62:9)
#10 group (package:unittest/unittest.dart:396:9)
#11 describe (/Users/chirayu/work/angular.dart/test/jasmine_syntax.dart:60:15)
#12 describe (/Users/chirayu/work/angular.dart/test/_specs.dart:248:46)
#13 main (/Users/chirayu/work/angular.dart/test/core/scope_spec.dart:14:11)
#14 main.<anonymous closure> (http://localhost:8765/__adapter_dart_unittest.dart:169:15)
#15 _rootRun (dart:async/zone.dart:723)
#16 _ZoneDelegate.run (dart:async/zone.dart:453)
#17 _CustomizedZone.run (dart:async/zone.dart:663)
#18 runZoned (dart:async/zone.dart:954)
#19 main (http://localhost:8765/__adapter_dart_unittest.dart:146:11)
#0 _SpecInjector.inject (package:angular/mock/test_injection.dart:60:7)
#1 inject.<anonymous closure> (package:angular/mock/test_injection.dart:100:44)
#2 _rootRun (dart:async/zone.dart:723)
#3 _rootRun (dart:async/zone.dart:724)
#4 _rootRun (dart:async/zone.dart:724)
#5 _ZoneDelegate.run (dart:async/zone.dart:453)
#6 _CustomizedZone.run (dart:async/zone.dart:663)
#7 runZoned (dart:async/zone.dart:954)
#8 _syncOuter.<anonymous closure> (package:angular/mock/zone.dart:227:22)
#9 _withSetup.<anonymous closure> (/Users/chirayu/work/angular.dart/test/jasmine_syntax.dart:13:14)
#10 _withSetup.<anonymous closure> (/Users/chirayu/work/angular.dart/test/jasmine_syntax.dart:14:5)
#11 _withSetup.<anonymous closure> (/Users/chirayu/work/angular.dart/test/jasmine_syntax.dart:14:5)
#12 _run.<anonymous closure> (package:unittest/src/test_case.dart:102:27)
#13 _rootRunUnary (dart:async/zone.dart:730)
#14 _ZoneDelegate.runUnary (dart:async/zone.dart:462)
#15 _CustomizedZone.runUnary (dart:async/zone.dart:667)
#16 _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:488)
#17 _Future._propagateToListeners (dart:async/future_impl.dart:571)
#18 _Future._completeWithValue (dart:async/future_impl.dart:331)
#19 _Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:393)
#20 _rootRun (dart:async/zone.dart:723)
#21 _ZoneDelegate.run (dart:async/zone.dart:453)
#22 _CustomizedZone.run (dart:async/zone.dart:663)
#23 _BaseZone.runGuarded (dart:async/zone.dart:574)
#24 _BaseZone.bindCallback.<anonymous closure> (dart:async/zone.dart:599)
#25 _asyncRunCallbackLoop (dart:async/schedule_microtask.dart:23)
#26 _asyncRunCallback (dart:async/schedule_microtask.dart:32)
#27 _handleMutation (file:///Volumes/data/b/build/slave/dartium-mac-full-dev/build/src/dart/tools/dom/src/native_DOMImplementation.dart:588)