OLD | NEW |
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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 import 'dart:async'; | 5 import 'dart:async'; |
6 | 6 |
7 import 'package:front_end/compiler_options.dart'; | 7 import 'package:front_end/compiler_options.dart'; |
8 import 'package:front_end/incremental_kernel_generator.dart'; | 8 import 'package:front_end/incremental_kernel_generator.dart'; |
9 import 'package:front_end/memory_file_system.dart'; | 9 import 'package:front_end/memory_file_system.dart'; |
10 import 'package:front_end/src/incremental/byte_store.dart'; | 10 import 'package:front_end/src/incremental/byte_store.dart'; |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 _getLibraryText(library), | 138 _getLibraryText(library), |
139 r''' | 139 r''' |
140 library; | 140 library; |
141 import self as self; | 141 import self as self; |
142 import "./a.dart" as a; | 142 import "./a.dart" as a; |
143 | 143 |
144 static field a::A a; | 144 static field a::A a; |
145 '''); | 145 '''); |
146 } | 146 } |
147 | 147 |
| 148 test_compile_export_cycle() async { |
| 149 writeFile('/test/.packages', 'test:lib/'); |
| 150 String aPath = '/test/lib/a.dart'; |
| 151 String bPath = '/test/lib/b.dart'; |
| 152 String cPath = '/test/lib/c.dart'; |
| 153 writeFile(aPath, 'export "b.dart"; class A {}'); |
| 154 writeFile(bPath, 'export "a.dart"; class B {}'); |
| 155 Uri cUri = writeFile( |
| 156 cPath, |
| 157 r''' |
| 158 import 'b.dart'; |
| 159 A a; |
| 160 B b; |
| 161 '''); |
| 162 |
| 163 { |
| 164 Program program = await getInitialState(cUri); |
| 165 Library library = _getLibrary(program, cUri); |
| 166 expect( |
| 167 _getLibraryText(library), |
| 168 r''' |
| 169 library; |
| 170 import self as self; |
| 171 import "./a.dart" as a; |
| 172 import "./b.dart" as b; |
| 173 |
| 174 static field a::A a; |
| 175 static field b::B b; |
| 176 '''); |
| 177 } |
| 178 |
| 179 // Update c.dart and compile. |
| 180 // We should load the cycle [a.dart, b.dart] from the byte store. |
| 181 // This tests that we compute export scopes after loading. |
| 182 writeFile( |
| 183 cPath, |
| 184 r''' |
| 185 import 'b.dart'; |
| 186 A a; |
| 187 B b; |
| 188 int c; |
| 189 '''); |
| 190 incrementalKernelGenerator.invalidate(cUri); |
| 191 { |
| 192 DeltaProgram delta = await incrementalKernelGenerator.computeDelta(); |
| 193 Program program = delta.newProgram; |
| 194 Library library = _getLibrary(program, cUri); |
| 195 expect( |
| 196 _getLibraryText(library), |
| 197 r''' |
| 198 library; |
| 199 import self as self; |
| 200 import "./a.dart" as a; |
| 201 import "./b.dart" as b; |
| 202 import "dart:core" as core; |
| 203 |
| 204 static field a::A a; |
| 205 static field b::B b; |
| 206 static field core::int c; |
| 207 '''); |
| 208 } |
| 209 } |
| 210 |
148 test_compile_typedef() async { | 211 test_compile_typedef() async { |
149 writeFile('/test/.packages', 'test:lib/'); | 212 writeFile('/test/.packages', 'test:lib/'); |
150 String aPath = '/test/lib/a.dart'; | 213 String aPath = '/test/lib/a.dart'; |
151 String bPath = '/test/lib/b.dart'; | 214 String bPath = '/test/lib/b.dart'; |
152 writeFile(aPath, 'typedef int F<T>(T x);'); | 215 writeFile(aPath, 'typedef int F<T>(T x);'); |
153 Uri bUri = writeFile( | 216 Uri bUri = writeFile( |
154 bPath, | 217 bPath, |
155 r''' | 218 r''' |
156 import 'a.dart'; | 219 import 'a.dart'; |
157 F<String> f; | 220 F<String> f; |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
361 throw fail('No library found with URI "$uri"'); | 424 throw fail('No library found with URI "$uri"'); |
362 } | 425 } |
363 | 426 |
364 String _getLibraryText(Library library) { | 427 String _getLibraryText(Library library) { |
365 StringBuffer buffer = new StringBuffer(); | 428 StringBuffer buffer = new StringBuffer(); |
366 new Printer(buffer, syntheticNames: new NameSystem()) | 429 new Printer(buffer, syntheticNames: new NameSystem()) |
367 .writeLibraryFile(library); | 430 .writeLibraryFile(library); |
368 return buffer.toString(); | 431 return buffer.toString(); |
369 } | 432 } |
370 } | 433 } |
OLD | NEW |