Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 8e3ac47

Browse files
authored
[web] allow imports to line-break (#57170)
We are about to `dart format` all the Dart code in the repo, which line-breaks some of our imports. This PR updates `sdk_rewriter.dart` to support line-broken imports.
1 parent 23cdf0f commit 8e3ac47

File tree

4 files changed

+53
-34
lines changed

4 files changed

+53
-34
lines changed

lib/web_ui/lib/src/engine/renderer.dart

+22-12
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ import 'dart:math' as math;
88
import 'dart:typed_data';
99

1010
import 'package:ui/src/engine.dart';
11-
import 'package:ui/src/engine/skwasm/skwasm_impl.dart' if (dart.library.html) 'package:ui/src/engine/skwasm/skwasm_stub.dart';
11+
import 'package:ui/src/engine/skwasm/skwasm_impl.dart'
12+
if (dart.library.html) 'package:ui/src/engine/skwasm/skwasm_stub.dart';
1213
import 'package:ui/ui.dart' as ui;
1314
import 'package:ui/ui_web/src/ui_web.dart' as ui_web;
1415

@@ -43,11 +44,12 @@ abstract class Renderer {
4344
if (!useCanvasKit) {
4445
// The user requested 'html' or 'auto' either in the command-line or JS.
4546
final String requested =
46-
configuration.requestedRendererType ??
47-
(FlutterConfiguration.flutterWebAutoDetect ? 'auto' : 'html');
47+
configuration.requestedRendererType ??
48+
(FlutterConfiguration.flutterWebAutoDetect ? 'auto' : 'html');
4849
printWarning(
4950
'The HTML Renderer is being deprecated. Stop using the "$requested" renderer mode.'
50-
'\nSee: https://docs.flutter.dev/to/web-html-renderer-deprecation');
51+
'\nSee: https://docs.flutter.dev/to/web-html-renderer-deprecation',
52+
);
5153
}
5254
return true;
5355
}());
@@ -120,14 +122,18 @@ abstract class Renderer {
120122
ui.ImageFilter createBlurImageFilter({
121123
double sigmaX = 0.0,
122124
double sigmaY = 0.0,
123-
ui.TileMode? tileMode});
124-
ui.ImageFilter createDilateImageFilter({ double radiusX = 0.0, double radiusY = 0.0});
125-
ui.ImageFilter createErodeImageFilter({ double radiusX = 0.0, double radiusY = 0.0});
125+
ui.TileMode? tileMode,
126+
});
127+
ui.ImageFilter createDilateImageFilter({double radiusX = 0.0, double radiusY = 0.0});
128+
ui.ImageFilter createErodeImageFilter({double radiusX = 0.0, double radiusY = 0.0});
126129
ui.ImageFilter createMatrixImageFilter(
127130
Float64List matrix4, {
128-
ui.FilterQuality filterQuality = ui.FilterQuality.low
131+
ui.FilterQuality filterQuality = ui.FilterQuality.low,
132+
});
133+
ui.ImageFilter composeImageFilters({
134+
required ui.ImageFilter outer,
135+
required ui.ImageFilter inner,
129136
});
130-
ui.ImageFilter composeImageFilters({required ui.ImageFilter outer, required ui.ImageFilter inner});
131137

132138
Future<ui.Codec> instantiateImageCodec(
133139
Uint8List list, {
@@ -143,8 +149,12 @@ abstract class Renderer {
143149

144150
FutureOr<ui.Image> createImageFromImageBitmap(DomImageBitmap imageSource);
145151

146-
FutureOr<ui.Image> createImageFromTextureSource(JSAny object,
147-
{required int width, required int height, required bool transferOwnership});
152+
FutureOr<ui.Image> createImageFromTextureSource(
153+
JSAny object, {
154+
required int width,
155+
required int height,
156+
required bool transferOwnership,
157+
});
148158

149159
void decodeImageFromPixels(
150160
Uint8List pixels,
@@ -155,7 +165,7 @@ abstract class Renderer {
155165
int? rowBytes,
156166
int? targetWidth,
157167
int? targetHeight,
158-
bool allowUpscaling = true
168+
bool allowUpscaling = true,
159169
});
160170

161171
ui.ImageShader createImageShader(

web_sdk/sdk_rewriter.dart

+1
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ List<Replacer> generatePartsPatterns(String libraryName, bool isPublic) {
7979
// Remove library directives.
8080
AllReplacer(RegExp(r'\nlibrary .+;'), ''),
8181
// Remove imports/exports from all part files.
82+
AllReplacer(RegExp(r"\nimport '.+'\n\s*if \(dart\.library\..*\) '.*';"), ''),
8283
AllReplacer(RegExp(r'\nimport\s*.*'), ''),
8384
AllReplacer(RegExp(r'\nexport\s*.*'), ''),
8485
AllReplacer(RegExp(r'\n@DefaultAsset(.*)'), ''),

web_sdk/test/js_access_test.dart

-22
Original file line numberDiff line numberDiff line change
@@ -60,22 +60,6 @@ export 'foo.dart';
6060
expect(result.violations, isEmpty);
6161
}
6262

63-
// Multi-line imports should fail.
64-
{
65-
final _CheckResult result = _checkFile(
66-
File('lib/web_ui/lib/src/engine/alarm_clock.dart'),
67-
'''
68-
import 'dart:async';
69-
import 'package:ui/ui.dart'
70-
as ui;
71-
''',
72-
);
73-
expect(result.failed, isTrue);
74-
expect(result.violations, <String>[
75-
"on line 2: import is broken up into multiple lines: import 'package:ui/ui.dart'",
76-
]);
77-
}
78-
7963
// A library that doesn't directly access JavaScript API should pass.
8064
expect(
8165
_checkFile(
@@ -180,12 +164,6 @@ _CheckResult _checkFile(File dartFile, String code) {
180164
continue;
181165
}
182166

183-
final bool isProperlyFormattedImport = line.endsWith(';');
184-
if (!isProperlyFormattedImport) {
185-
violations.add('on line $lineNumber: import is broken up into multiple lines: $line');
186-
continue;
187-
}
188-
189167
if (line.contains('"')) {
190168
violations.add('on line $lineNumber: import is using double quotes instead of single quotes: $line');
191169
continue;

web_sdk/test/sdk_rewriter_test.dart

+30
Original file line numberDiff line numberDiff line change
@@ -192,4 +192,34 @@ void printSomething() {
192192
expect(getExtraImportsForLibrary('web_test_fonts'), isEmpty);
193193
expect(getExtraImportsForLibrary('web_locale_keymap'), isEmpty);
194194
});
195+
196+
test('allows imports to line-break', () {
197+
const String source = '''
198+
import 'package:some_package/some_package.dart';
199+
import 'package:ui/src/engine/skwasm/skwasm_impl.dart'
200+
if (dart.library.html) 'package:ui/src/engine/skwasm/skwasm_stub.dart';
201+
import 'package:ui/src/engine/skwasm/skwasm_impl.dart'
202+
if (dart.library.js_interop) 'package:ui/src/engine/skwasm/skwasm_stub.dart';
203+
import 'package:some_package/some_package' as some_package;
204+
205+
void printSomething() {
206+
print('something');
207+
}
208+
''';
209+
210+
const String expected = '''
211+
part of dart._engine;
212+
213+
void printSomething() {
214+
print('something');
215+
}
216+
''';
217+
218+
final String result = processSource(
219+
source,
220+
(String source) => preprocessPartFile(source, 'engine'),
221+
generatePartsPatterns('engine', false),
222+
);
223+
expect(result, expected);
224+
});
195225
}

0 commit comments

Comments
 (0)