diff --git a/lib/core_dom/element_binder.dart b/lib/core_dom/element_binder.dart
index 98fb382c3..79be68c1c 100644
--- a/lib/core_dom/element_binder.dart
+++ b/lib/core_dom/element_binder.dart
@@ -353,9 +353,11 @@ class _TaskList {
Function onDone;
final List _tasks = [];
bool isDone = false;
+ int firstTask;
_TaskList(this.onDone) {
if (onDone == null) isDone = true;
+ firstTask = registerTask();
}
int registerTask() {
@@ -374,7 +376,7 @@ class _TaskList {
}
void doneRegistering() {
- completeTask(registerTask());
+ completeTask(firstTask);
}
}
diff --git a/test/core_dom/compiler_spec.dart b/test/core_dom/compiler_spec.dart
index bdc3eb296..8413ca976 100644
--- a/test/core_dom/compiler_spec.dart
+++ b/test/core_dom/compiler_spec.dart
@@ -280,6 +280,7 @@ void main() {
describe('components', () {
beforeEachModule((Module module) {
module
+ ..bind(AttachWithAttr)
..bind(CamelCaseMapComponent)
..bind(IoComponent)
..bind(IoControllerComponent)
@@ -654,6 +655,15 @@ void main() {
expect(logger).toEqual(['SimpleAttachComponent']);
}));
+ it('should call attach after mappings have been set', async((Logger logger) {
+ _.compile('