| 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.md file. | 3 // BSD-style license that can be found in the LICENSE.md file. |
| 4 import 'dart:async'; | 4 import 'dart:async'; |
| 5 import 'dart:convert'; | 5 import 'dart:convert'; |
| 6 import 'dart:io'; | 6 import 'dart:io'; |
| 7 | 7 |
| 8 import 'package:front_end/src/base/instrumentation.dart'; | 8 import 'package:front_end/src/base/instrumentation.dart'; |
| 9 import 'package:front_end/src/fasta/compiler_context.dart' show CompilerContext; |
| 9 import 'package:front_end/src/fasta/messages.dart'; | 10 import 'package:front_end/src/fasta/messages.dart'; |
| 10 import 'package:front_end/src/fasta/scanner.dart'; | 11 import 'package:front_end/src/fasta/scanner.dart'; |
| 11 import 'package:front_end/src/fasta/scanner/io.dart'; | 12 import 'package:front_end/src/fasta/scanner/io.dart'; |
| 13 import 'package:front_end/src/fasta/severity.dart' show Severity; |
| 12 import 'package:front_end/src/scanner/token.dart' as analyzer; | 14 import 'package:front_end/src/scanner/token.dart' as analyzer; |
| 13 | 15 |
| 14 /// Implementation of [Instrumentation] which checks property/value pairs | 16 /// Implementation of [Instrumentation] which checks property/value pairs |
| 15 /// against expectations encoded in source files using "/*@...*/" comments. | 17 /// against expectations encoded in source files using "/*@...*/" comments. |
| 16 class ValidatingInstrumentation implements Instrumentation { | 18 class ValidatingInstrumentation implements Instrumentation { |
| 17 static final _ESCAPE_SEQUENCE = new RegExp(r'\\(.)'); | 19 static final _ESCAPE_SEQUENCE = new RegExp(r'\\(.)'); |
| 18 | 20 |
| 19 /// Map from feature names to the property names they are short for. | 21 /// Map from feature names to the property names they are short for. |
| 20 static const _FEATURES = const { | 22 static const _FEATURES = const { |
| 21 'inference': const [ | 23 'inference': const [ |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 193 String _escape(String s) { | 195 String _escape(String s) { |
| 194 s = s.replaceAll(r'\', r'\\'); | 196 s = s.replaceAll(r'\', r'\\'); |
| 195 if (s.endsWith('/')) { | 197 if (s.endsWith('/')) { |
| 196 s = '$s '; | 198 s = '$s '; |
| 197 } | 199 } |
| 198 return s.replaceAll('/*', r'/\*').replaceAll('*/', r'*\/'); | 200 return s.replaceAll('/*', r'/\*').replaceAll('*/', r'*\/'); |
| 199 } | 201 } |
| 200 | 202 |
| 201 String _formatProblem( | 203 String _formatProblem( |
| 202 Uri uri, int offset, String desc, StackTrace stackTrace) { | 204 Uri uri, int offset, String desc, StackTrace stackTrace) { |
| 203 return deprecated_format( | 205 return CompilerContext.current.format( |
| 204 uri, offset, '$desc${stackTrace == null ? '' : '\n$stackTrace'}'); | 206 templateUnspecified |
| 207 .withArguments('$desc${stackTrace == null ? '' : '\n$stackTrace'}') |
| 208 .withLocation(uri, offset), |
| 209 Severity.internalProblem); |
| 205 } | 210 } |
| 206 | 211 |
| 207 String _makeExpectationComment(String property, InstrumentationValue value) { | 212 String _makeExpectationComment(String property, InstrumentationValue value) { |
| 208 return '/*@$property=${_escape(value.toString())}*/'; | 213 return '/*@$property=${_escape(value.toString())}*/'; |
| 209 } | 214 } |
| 210 | 215 |
| 211 void _problem(Uri uri, int offset, String desc, _Fix fix) { | 216 void _problem(Uri uri, int offset, String desc, _Fix fix) { |
| 212 _problems.add(_formatProblem(uri, offset, desc, null)); | 217 _problems.add(_formatProblem(uri, offset, desc, null)); |
| 213 _fixes.putIfAbsent(uri, () => []).add(fix); | 218 _fixes.putIfAbsent(uri, () => []).add(fix); |
| 214 } | 219 } |
| (...skipping 26 matching lines...) Expand all Loading... |
| 241 this.property, this.value, this.commentOffset, this.commentLength); | 246 this.property, this.value, this.commentOffset, this.commentLength); |
| 242 } | 247 } |
| 243 | 248 |
| 244 class _Fix { | 249 class _Fix { |
| 245 final int offset; | 250 final int offset; |
| 246 final int length; | 251 final int length; |
| 247 final String replacement; | 252 final String replacement; |
| 248 | 253 |
| 249 _Fix(this.offset, this.length, this.replacement); | 254 _Fix(this.offset, this.length, this.replacement); |
| 250 } | 255 } |
| OLD | NEW |