Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(832)

Side by Side Diff: test/closure/closure_annotation_test.dart

Issue 1676463002: Type annotations instead of closure comments. (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: merged master Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « lib/src/js/type_printer.dart ('k') | test/codegen/closure.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library dev_compiler.test.closure_annotation_test; 5 library dev_compiler.test.closure_annotation_test;
6 6
7 import 'package:test/test.dart'; 7 import 'package:test/test.dart';
8 8
9 import 'package:dev_compiler/src/closure/closure_annotation.dart'; 9 import 'package:dev_compiler/src/closure/closure_annotation.dart';
10 import 'package:dev_compiler/src/closure/closure_type.dart'; 10 import 'package:dev_compiler/src/js/js_ast.dart' show TypeRef, Identifier;
11 11
12 void main() { 12 void main() {
13 group('ClosureAnnotation', () { 13 group('ClosureAnnotation', () {
14 var allType = new ClosureType.all(); 14 var anyType = new TypeRef.any();
15 var unknownType = new ClosureType.unknown(); 15 var unknownType = new TypeRef.unknown();
16 var numberType = new ClosureType.number(); 16 var numberType = new TypeRef.number();
17 var stringType = new ClosureType.string(); 17 var stringType = new TypeRef.string();
18 var booleanType = new ClosureType.boolean(); 18 var booleanType = new TypeRef.boolean();
19 var fooType = new ClosureType.type("foo.Foo"); 19 var fooType = new TypeRef.qualified(
20 var barType = new ClosureType.type("bar.Bar"); 20 [new Identifier("foo"), new Identifier("Foo")]);
21 var bazType = new ClosureType.type("baz.Baz"); 21 var barType = new TypeRef.named("Bar");
22 var bamType = new ClosureType.type("bam.Bam"); 22 var bazType = new TypeRef.named("Baz");
23 var batType = new ClosureType.type("bat.Bat"); 23 var bamType = new TypeRef.named("Bam");
24 var batType = new TypeRef.named("Bat");
24 25
25 test('gives empty comment when no has no meaningful info', () { 26 test('gives empty comment when no has no meaningful info', () {
26 expect(new ClosureAnnotation().toString(), ""); 27 expect(new ClosureAnnotation().toString(), "");
27 expect(new ClosureAnnotation(type: allType).toString(), ""); 28 expect(new ClosureAnnotation(type: anyType).toString(), "");
28 expect(new ClosureAnnotation(type: unknownType).toString(), ""); 29 expect(new ClosureAnnotation(type: unknownType).toString(), "");
29 }); 30 });
30 31
31 test('gives single line comment when it fits', () { 32 test('gives single line comment when it fits', () {
32 expect(new ClosureAnnotation(type: numberType).toString(), 33 expect(new ClosureAnnotation(type: numberType).toString(),
33 "/** @type {number} */"); 34 "/** @type {number} */");
34 expect(new ClosureAnnotation(paramTypes: {'foo': allType}).toString(), 35 expect(new ClosureAnnotation(paramTypes: {'foo': anyType}).toString(),
35 "/** @param {*} foo */"); 36 "/** @param {*} foo */");
36 expect(new ClosureAnnotation(paramTypes: {'foo': unknownType}).toString(), 37 expect(new ClosureAnnotation(paramTypes: {'foo': unknownType}).toString(),
37 "/** @param {?} foo */"); 38 "/** @param {?} foo */");
38 }); 39 });
39 40
40 test('gives multiple line comment when it it does not fit on one line', () { 41 test('gives multiple line comment when it it does not fit on one line', () {
41 expect(new ClosureAnnotation( 42 expect(new ClosureAnnotation(
42 returnType: stringType, paramTypes: {'foo': numberType}) 43 returnType: stringType, paramTypes: {'foo': numberType})
43 .toString(), 44 .toString(),
44 "/**\n" 45 "/**\n"
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 isNoSideEffects: true, 103 isNoSideEffects: true,
103 isNoCollapse: true, 104 isNoCollapse: true,
104 paramTypes: {'x': stringType, 'y': numberType}, 105 paramTypes: {'x': stringType, 'y': numberType},
105 templates: ['A', 'B']).toString(), 106 templates: ['A', 'B']).toString(),
106 '/**\n' 107 '/**\n'
107 ' * @template A, B\n' 108 ' * @template A, B\n'
108 ' * @this {foo.Foo}\n' 109 ' * @this {foo.Foo}\n'
109 ' * @override\n' 110 ' * @override\n'
110 ' * @nosideeffects\n' 111 ' * @nosideeffects\n'
111 ' * @nocollapse\n' 112 ' * @nocollapse\n'
112 ' * @lends {bat.Bat}\n' 113 ' * @lends {Bat}\n'
113 ' * @private @protected @final @const\n' 114 ' * @private @protected @final @const\n'
114 ' * @constructor @struct @extends {bar.Bar}\n' 115 ' * @constructor @struct @extends {Bar}\n'
115 ' * @implements {baz.Baz}\n' 116 ' * @implements {Baz}\n'
116 ' * @param {string} x\n' 117 ' * @param {string} x\n'
117 ' * @param {number} y\n' 118 ' * @param {number} y\n'
118 ' * @return {boolean}\n' 119 ' * @return {boolean}\n'
119 ' * @throws {bam.Bam}\n' 120 ' * @throws {Bam}\n'
120 ' */'); 121 ' */');
121 }); 122 });
122 }); 123 });
123 } 124 }
OLDNEW
« no previous file with comments | « lib/src/js/type_printer.dart ('k') | test/codegen/closure.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698