| Index: pkg/code_transformers/test/unique_message_test.dart | 
| diff --git a/pkg/code_transformers/test/unique_message_test.dart b/pkg/code_transformers/test/unique_message_test.dart | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..4b1c924a5d2067c4bea9b8c914f07e1a4fb2ed78 | 
| --- /dev/null | 
| +++ b/pkg/code_transformers/test/unique_message_test.dart | 
| @@ -0,0 +1,37 @@ | 
| +// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file | 
| +// for details. All rights reserved. Use of this source code is governed by a | 
| +// BSD-style license that can be found in the LICENSE file. | 
| + | 
| +/// Tests for some of the utility helper functions used by the compiler. | 
| +library polymer.test.build.messages_test; | 
| + | 
| +import 'dart:mirrors'; | 
| + | 
| +import 'package:unittest/unittest.dart'; | 
| +import 'package:code_transformers/messages/messages.dart' show Message; | 
| + | 
| +import 'package:code_transformers/src/messages.dart' as p1; | 
| + | 
| +/// [p1] is accessed via mirrors, this comment prevents the analyzer from | 
| +/// complaining about it. | 
| +main() { | 
| +  test('each message id is unique', () { | 
| +    var seen = {}; | 
| +    int total = 0; | 
| +    var mirrors = currentMirrorSystem(); | 
| +    var lib = mirrors.findLibrary(#code_transformers.src.messages); | 
| +    expect(lib, isNotNull); | 
| +    lib.declarations.forEach((symbol, decl) { | 
| +      if (decl is! VariableMirror) return; | 
| +      var field = lib.getField(symbol).reflectee; | 
| +      var name = MirrorSystem.getName(symbol); | 
| +      if (field is! Message) return; | 
| +      var id = field.id; | 
| +      expect(seen.containsKey(id), isFalse, reason: 'Duplicate id `$id`. ' | 
| +          'Currently set for both `$name` and `${seen[id]}`.'); | 
| +      seen[id] = name; | 
| +      total++; | 
| +    }); | 
| +    expect(seen.length, total); | 
| +  }); | 
| +} | 
|  |