[dart2wasm] Fix location RangeError when using `part`
Here's a minimal repro that this CL fixes:
`ui.dart`
```dart
library dart.ui;
import 'dart:ffi';
part 'foo.dart';
```
`foo.dart`
```dart
part of dart.ui;
@Native<Void Function()>(symbol: 'foo_func', isLeaf: true)
external void foo_func();
```
When compiling with `compile_platform.dart` with `--target=dart2wasm`, the following error appears:
```
Unhandled exception:
Verification error: Target=wasm, VerificationStage.afterModularTransformations: Invalid location with target 'wasm' on FunctionNode() (FunctionNode): RangeError (offset): Invalid value: Not in inclusive range 0..56: 91
Context: 'foo_func_$import'.
Node: 'FunctionNode()'.
#0 VerificationErrorListener.reportError (package:kernel/verifier.dart:81:5)
#1 VerifyingVisitor.problem (package:kernel/verifier.dart:222:14)
#2 VerifyingVisitor._getLocation (package:kernel/verifier.dart:1361:7)
#3 VerifyingVisitor._hasLocation (package:kernel/verifier.dart:1370:26)
#4 VerifyingVisitor.getSameLibraryLastSeenTreeNode (package:kernel/verifier.dart:1342:28)
#5 VerifyingVisitor.localContext (package:kernel/verifier.dart:1382:24)
#6 VerifyingVisitor.defaultDartType (package:kernel/verifier.dart:1491:41)
#7 Visitor.visitVoidType (package:kernel/visitor.dart:1309:37)
#8 VoidType.accept (package:kernel/ast.dart:11190:42)
#9 FunctionNode.visitChildren (package:kernel/ast.dart:3919:16)
#10 VerifyingVisitor.visitChildren (package:kernel/verifier.dart:259:10)
#11 VerifyingVisitor.visitWithLocalScope (package:kernel/verifier.dart:266:5)
#12 VerifyingVisitor.visitFunctionNode (package:kernel/verifier.dart:721:5)
#13 FunctionNode.accept (package:kernel/ast.dart:3908:38)
#14 VerifyingVisitor.visitProcedure (package:kernel/verifier.dart:620:19)
#15 Procedure.accept (package:kernel/ast.dart:3311:40)
#16 visitList (package:kernel/ast.dart:14488:14)
#17 Library.visitChildren (package:kernel/ast.dart:591:5)
#18 VerifyingVisitor.visitChildren (package:kernel/verifier.dart:259:10)
#19 VerifyingVisitor.defaultTreeNode (package:kernel/verifier.dart:196:5)
#20 TreeVisitor.visitLibrary (package:kernel/visitor.dart:503:35)
#21 VerifyingVisitor.visitLibrary (package:kernel/verifier.dart:367:11)
#22 Library.accept (package:kernel/ast.dart:577:38)
#23 visitList (package:kernel/ast.dart:14488:14)
#24 Component.visitChildren (package:kernel/ast.dart:14320:5)
#25 VerifyingVisitor.visitChildren (package:kernel/verifier.dart:259:10)
#26 VerifyingVisitor.visitComponent (package:kernel/verifier.dart:342:7)
#27 Component.accept (package:kernel/ast.dart:14313:38)
#28 VerifyingVisitor.check (package:kernel/verifier.dart:171:15)
#29 verifyComponent (package:kernel/verifier.dart:69:20)
...
```
The issue seems to be that after doing this native transformation, the node's `fileUri` references the enclosing library (`ui.dart` above), but the `node.location` references the actual source file (`foo.dart` above) indirectly through `node.fileOffset`.
This ends up being an issue when compiling the platform dill in Google3, but I didn't look into why `flutter build web --wasm` isn't broken.
Internal bug: b/292172146
Change-Id: I2b8d7d215b2c36354860257ce651d50168e9523d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/315360
Reviewed-by: Ömer Ağacan <omersa@google.com>
Commit-Queue: Jia Hao Goh <jiahaog@google.com>
diff --git a/pkg/dart2wasm/lib/ffi_native_transformer.dart b/pkg/dart2wasm/lib/ffi_native_transformer.dart
index 8df91e0..c9c7e64 100644
--- a/pkg/dart2wasm/lib/ffi_native_transformer.dart
+++ b/pkg/dart2wasm/lib/ffi_native_transformer.dart
@@ -191,7 +191,7 @@
FunctionNode(null,
positionalParameters: wasmImportProcedureArgs,
returnType: retWasmType_),
- fileUri: currentLibrary.fileUri,
+ fileUri: node.fileUri,
isExternal: true,
isStatic: true,
isSynthetic: true)