Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

类的构造函数中包含widget参数,编译报错,求大佬帮忙看下 #86

Closed
ameryzhu opened this issue Dec 24, 2020 · 4 comments

Comments

@ameryzhu
Copy link

ameryzhu commented Dec 24, 2020

发现只要有类的无名构造函数中含有widget就无法编译通过。比如下面D类,在调用的时候有给widget传值,编译就会报错,把widget赋值给去掉,就可以正常插入代码,并成功打印。

截屏2020-12-25 上午12 19 45

截屏2020-12-25 上午12 21 37

Unhandled exception:
Crash when compiling null,
at character offset null:
NoSuchMethodError: The getter 'line' was called on null.
Receiver: null
Tried calling: line
#0 Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
#1 _WidgetCallSiteTransformer._constructLocation (package:kernel/transformations/track_widget_constructor_locations.dart:164:59)
#2 _WidgetCallSiteTransformer._computeLocation (package:kernel/transformations/track_widget_constructor_locations.dart:272:30)
#3 _WidgetCallSiteTransformer._addLocationArgument (package:kernel/transformations/track_widget_constructor_locations.dart:223:7)
#4 _WidgetCallSiteTransformer.visitConstructorInvocation (package:kernel/transformations/track_widget_constructor_locations.dart:238:5)
#5 ConstructorInvocation.accept (package:kernel/ast.dart:4204:44)
#6 MapEntry.transformChildren (package:kernel/ast.dart:5504:21)
#7 Transformer.defaultTreeNode (package:kernel/visitor.dart:653:10)
#8 TreeVisitor.visitMapEntry (package:kernel/visitor.dart:265:37)
#9 MapEntry.accept (package:kernel/ast.dart:5491:38)
#10 transformList (package:kernel/ast.dart:9699:27)
#11 MapLiteral.transformChildren (package:kernel/ast.dart:5454:5)
#12 Transformer.defaultTreeNode (package:kernel/visitor.dart:653:10)
#13 TreeVisitor.defaultExpression (package:kernel/visitor.dart:144:43)
#14 TreeVisitor.visitMapLiteral (package:kernel/visitor.dart:186:41)
#15 MapLiteral.accept (package:kernel/ast.dart:5441:44)
#16 transformList (package:kernel/ast.dart:9699:27)
#17 Arguments.transformChildren (package:kernel/ast.dart:3813:5)
#18 Transformer.defaultTreeNode (package:kernel/visitor.dart:653:10)
#19 TreeVisitor.visitArguments (package:kernel/visitor.dart:261:39)
#20 Arguments.accept (package:kernel/ast.dart:3803:38)
#21 ConstructorInvocation.transformChildren (package:kernel/ast.dart:4215:29)
#22 _WidgetCallSiteTransformer.visitConstructorInvocation (package:kernel/transformations/track_widget_constructor_locations.dart:230:10)
#23 ConstructorInvocation.accept (package:kernel/ast.dart:4204:44)
#24 transformList (package:kernel/ast.dart:9699:27)
#25 Arguments.transformChildren (package:kernel/ast.dart:3813:5)
#26 Transformer.defaultTreeNode (package:kernel/visitor.dart:653:10)
#27 TreeVisitor.visitArguments (package:kernel/visitor.dart:261:39)
#28 Arguments.accept (package:kernel/ast.dart:3803:38)
#29 StaticInvocation.transformChildren (package:kernel/ast.dart:4149:29)
#30 _WidgetCallSiteTransformer.visitStaticInvocation (package:kernel/transformations/track_widget_constructor_locations.dart:202:10)
#31 StaticInvocation.accept (package:kernel/ast.dart:4138:44)
#32 VariableDeclaration.transformChildren (package:kernel/ast.dart:7001:33)
#33 Transformer.defaultTreeNode (package:kernel/visitor.dart:653:10)
#34 TreeVisitor.defaultStatement (package:kernel/visitor.dart:203:41)
#35 TreeVisitor.visitVariableDeclaration (package:kernel/visitor.dart:225:7)
#36 VariableDeclaration.accept (package:kernel/ast.dart:6987:43)
#37 transformList (package:kernel/ast.dart:9699:27)
#38 Block.transformChildren (package:kernel/ast.dart:5881:5)
#39 Transformer.defaultTreeNode (package:kernel/visitor.dart:653:10)
#40 TreeVisitor.defaultStatement (package:kernel/visitor.dart:203:41)
#41 TreeVisitor.visitBlock (package:kernel/visitor.dart:206:31)
#42 Block.accept (package:kernel/ast.dart:5873:43)
#43 FunctionNode.transformChildren (package:kernel/ast.dart:2948:19)
#44 Transformer.defaultTreeNode (package:kernel/visitor.dart:653:10)
#45 TreeVisitor.visitFunctionNode (package:kernel/visitor.dart:260:45)
#46 FunctionNode.accept (package:kernel/ast.dart:2932:38)
#47 Procedure.transformChildren (package:kernel/ast.dart:2436:27)
#48 Transformer.defaultTreeNode (package:kernel/visitor.dart:653:10)
#49 _WidgetCallSiteTransformer.visitProcedure (package:kernel/transformations/track_widget_constructor_locations.dart:193:12)
#50 Procedure.accept (package:kernel/ast.dart:2423:40)
#51 transformList (package:kernel/ast.dart:9699:27)
#52 Library.transformChildren (package:kernel/ast.dart:627:5)
#53 WidgetCreatorTracker.transform (package:kernel/transformations/track_widget_constructor_locations.dart:504:15)
#54 FlutterTarget.performPreConstantEvaluationTransformations (package:vm/target/flutter.dart:82:22)
#55 KernelTarget.runBuildTransformations (package:front_end/src/fasta/kernel/kernel_target.dart:1093:19)
#56 KernelTarget.buildComponent. (package:front_end/src/fasta/kernel/kernel_target.dart:390:7)

#57 KernelTarget.buildComponent. (package:front_end/src/fasta/kernel/kernel_target.dart)
#58 withCrashReporting (package:front_end/src/fasta/crash.dart:122:24)
#59 KernelTarget.buildComponent (package:front_end/src/fasta/kernel/kernel_target.dart:380:12)
#60 generateKernelInternal. (package:front_end/src/kernel_generator_impl.dart:177:38)

#61 generateKernelInternal. (package:front_end/src/kernel_generator_impl.dart)
#62 withCrashReporting (package:front_end/src/fasta/crash.dart:122:24)
#63 generateKernelInternal (package:front_end/src/kernel_generator_impl.dart:73:10)
#64 kernelForProgramInternal. (package:front_end/src/api_prototype/kernel_generator.dart:61:35)
#65 CompilerContext.runWithOptions. (package:front_end/src/fasta/compiler_context.dart:135:20)

#66 CompilerContext.runWithOptions. (package:front_end/src/fasta/compiler_context.dart)
#67 CompilerContext.runInContext.. (package:front_end/src/fasta/compiler_context.dart:123:46)
#68 new Future.sync (dart:async/future.dart:223:31)
#69 CompilerContext.runInContext. (package:front_end/src/fasta/compiler_context.dart:123:19)
#70 _rootRun (dart:async/zone.dart:1190:13)
#71 _CustomZone.run (dart:async/zone.dart:1093:19)
#72 _runZoned (dart:async/zone.dart:1630:10)
#73 runZoned (dart:async/zone.dart:1550:10)
#74 CompilerContext.runInContext (package:front_end/src/fasta/compiler_context.dart:122:12)
#75 CompilerContext.runWithOptions (package:front_end/src/fasta/compiler_context.dart:133:10)
#76 kernelForProgramInternal (package:front_end/src/api_prototype/kernel_generator.dart:60:32)
#77 kernelForProgram (package:front_end/src/api_prototype/kernel_generator.dart:52:17)
#78 compileToKernel (package:vm/kernel_front_end.dart:381:28)
#79 FrontendCompiler.compile. (package:frontend_server/frontend_server.dart:542:54)
#80 new Future. (dart:async/future.dart:175:37)
#81 _rootRun (dart:async/zone.dart:1182:47)
#82 _CustomZone.run (dart:async/zone.dart:1093:19)
#83 _CustomZone.runGuarded (dart:async/zone.dart:997:7)
#84 _CustomZone.bindCallbackGuarded. (dart:async/zone.dart:1037:23)
#85 _rootRun (dart:async/zone.dart:1190:13)
#86 _CustomZone.run (dart:async/zone.dart:1093:19)
#87 _CustomZone.bindCallback. (dart:async/zone.dart:1021:23)
#88 Timer._createTimer. (dart:async-patch/timer_patch.dart:18:15)
#89 _Timer._runTimers (dart:isolate-patch/timer_impl.dart:397:19)
#90 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:428:5)
#91 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)

#0 Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
#1 _WidgetCallSiteTransformer._constructLocation (package:kernel/transformations/track_widget_constructor_locations.dart:164:59)
#2 _WidgetCallSiteTransformer._computeLocation (package:kernel/transformations/track_widget_constructor_locations.dart:272:30)
#3 _WidgetCallSiteTransformer._addLocationArgument (package:kernel/transformations/track_widget_constructor_locations.dart:223:7)
#4 _WidgetCallSiteTransformer.visitConstructorInvocation (package:kernel/transformations/track_widget_constructor_locations.dart:238:5)
#5 ConstructorInvocation.accept (package:kernel/ast.dart:4204:44)
#6 MapEntry.transformChildren (package:kernel/ast.dart:5504:21)
#7 Transformer.defaultTreeNode (package:kernel/visitor.dart:653:10)
#8 TreeVisitor.visitMapEntry (package:kernel/visitor.dart:265:37)
#9 MapEntry.accept (package:kernel/ast.dart:5491:38)
#10 transformList (package:kernel/ast.dart:9699:27)
#11 MapLiteral.transformChildren (package:kernel/ast.dart:5454:5)
#12 Transformer.defaultTreeNode (package:kernel/visitor.dart:653:10)
#13 TreeVisitor.defaultExpression (package:kernel/visitor.dart:144:43)
#14 TreeVisitor.visitMapLiteral (package:kernel/visitor.dart:186:41)
#15 MapLiteral.accept (package:kernel/ast.dart:5441:44)
#16 transformList (package:kernel/ast.dart:9699:27)
#17 Arguments.transformChildren (package:kernel/ast.dart:3813:5)
#18 Transformer.defaultTreeNode (package:kernel/visitor.dart:653:10)
#19 TreeVisitor.visitArguments (package:kernel/visitor.dart:261:39)
#20 Arguments.accept (package:kernel/ast.dart:3803:38)
#21 ConstructorInvocation.transformChildren (package:kernel/ast.dart:4215:29)
#22 _WidgetCallSiteTransformer.visitConstructorInvocation (package:kernel/transformations/track_widget_constructor_locations.dart:230:10)
#23 ConstructorInvocation.accept (package:kernel/ast.dart:4204:44)
#24 transformList (package:kernel/ast.dart:9699:27)
#25 Arguments.transformChildren (package:kernel/ast.dart:3813:5)
#26 Transformer.defaultTreeNode (package:kernel/visitor.dart:653:10)
#27 TreeVisitor.visitArguments (package:kernel/visitor.dart:261:39)
#28 Arguments.accept (package:kernel/ast.dart:3803:38)
#29 StaticInvocation.transformChildren (package:kernel/ast.dart:4149:29)
#30 _WidgetCallSiteTransformer.visitStaticInvocation (package:kernel/transformations/track_widget_constructor_locations.dart:202:10)
#31 StaticInvocation.accept (package:kernel/ast.dart:4138:44)
#32 VariableDeclaration.transformChildren (package:kernel/ast.dart:7001:33)
#33 Transformer.defaultTreeNode (package:kernel/visitor.dart:653:10)
#34 TreeVisitor.defaultStatement (package:kernel/visitor.dart:203:41)
#35 TreeVisitor.visitVariableDeclaration (package:kernel/visitor.dart:225:7)
#36 VariableDeclaration.accept (package:kernel/ast.dart:6987:43)
#37 transformList (package:kernel/ast.dart:9699:27)
#38 Block.transformChildren (package:kernel/ast.dart:5881:5)
#39 Transformer.defaultTreeNode (package:kernel/visitor.dart:653:10)
#40 TreeVisitor.defaultStatement (package:kernel/visitor.dart:203:41)
#41 TreeVisitor.visitBlock (package:kernel/visitor.dart:206:31)
#42 Block.accept (package:kernel/ast.dart:5873:43)
#43 FunctionNode.transformChildren (package:kernel/ast.dart:2948:19)
#44 Transformer.defaultTreeNode (package:kernel/visitor.dart:653:10)
#45 TreeVisitor.visitFunctionNode (package:kernel/visitor.dart:260:45)
#46 FunctionNode.accept (package:kernel/ast.dart:2932:38)
#47 Procedure.transformChildren (package:kernel/ast.dart:2436:27)
#48 Transformer.defaultTreeNode (package:kernel/visitor.dart:653:10)
#49 _WidgetCallSiteTransformer.visitProcedure (package:kernel/transformations/track_widget_constructor_locations.dart:193:12)
#50 Procedure.accept (package:kernel/ast.dart:2423:40)
#51 transformList (package:kernel/ast.dart:9699:27)
#52 Library.transformChildren (package:kernel/ast.dart:627:5)
#53 WidgetCreatorTracker.transform (package:kernel/transformations/track_widget_constructor_locations.dart:504:15)
#54 FlutterTarget.performPreConstantEvaluationTransformations (package:vm/target/flutter.dart:82:22)
#55 KernelTarget.runBuildTransformations (package:front_end/src/fasta/kernel/kernel_target.dart:1093:19)
#56 KernelTarget.buildComponent. (package:front_end/src/fasta/kernel/kernel_target.dart:390:7)

#57 KernelTarget.buildComponent. (package:front_end/src/fasta/kernel/kernel_target.dart)
#58 withCrashReporting (package:front_end/src/fasta/crash.dart:122:24)
#59 KernelTarget.buildComponent (package:front_end/src/fasta/kernel/kernel_target.dart:380:12)
#60 generateKernelInternal. (package:front_end/src/kernel_generator_impl.dart:177:38)

#61 generateKernelInternal. (package:front_end/src/kernel_generator_impl.dart)
#62 withCrashReporting (package:front_end/src/fasta/crash.dart:122:24)
#63 generateKernelInternal (package:front_end/src/kernel_generator_impl.dart:73:10)
#64 kernelForProgramInternal. (package:front_end/src/api_prototype/kernel_generator.dart:61:35)
#65 CompilerContext.runWithOptions. (package:front_end/src/fasta/compiler_context.dart:135:20)

#66 CompilerContext.runWithOptions. (package:front_end/src/fasta/compiler_context.dart)
#67 CompilerContext.runInContext.. (package:front_end/src/fasta/compiler_context.dart:123:46)
#68 new Future.sync (dart:async/future.dart:223:31)
#69 CompilerContext.runInContext. (package:front_end/src/fasta/compiler_context.dart:123:19)
#70 _rootRun (dart:async/zone.dart:1190:13)
#71 _CustomZone.run (dart:async/zone.dart:1093:19)
#72 _runZoned (dart:async/zone.dart:1630:10)
#73 runZoned (dart:async/zone.dart:1550:10)
#74 CompilerContext.runInContext (package:front_end/src/fasta/compiler_context.dart:122:12)
#75 CompilerContext.runWithOptions (package:front_end/src/fasta/compiler_context.dart:133:10)
#76 kernelForProgramInternal (package:front_end/src/api_prototype/kernel_generator.dart:60:32)
#77 kernelForProgram (package:front_end/src/api_prototype/kernel_generator.dart:52:17)
#78 compileToKernel (package:vm/kernel_front_end.dart:381:28)
#79 FrontendCompiler.compile. (package:frontend_server/frontend_server.dart:542:54)
#80 new Future. (dart:async/future.dart:175:37)
#81 _rootRun (dart:async/zone.dart:1182:47)
#82 _CustomZone.run (dart:async/zone.dart:1093:19)
#83 _CustomZone.runGuarded (dart:async/zone.dart:997:7)
#84 _CustomZone.bindCallbackGuarded. (dart:async/zone.dart:1037:23)
#85 _rootRun (dart:async/zone.dart:1190:13)
#86 _CustomZone.run (dart:async/zone.dart:1093:19)
#87 _CustomZone.bindCallback. (dart:async/zone.dart:1021:23)
#88 Timer._createTimer. (dart:async-patch/timer_patch.dart:18:15)
#89 _Timer._runTimers (dart:isolate-patch/timer_impl.dart:397:19)
#90 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:428:5)
#91 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)

Oops; flutter has exited unexpectedly: "FileSystemException: Cannot open file, path = 'build/flutter_assets/.last_build_id' (OS Error: No such file or
directory, errno = 2)".

A crash report has been written to /Users/local-admin/Documents/code2/aspectd/aspectd_impl/flutter_01.log.
This crash may already be reported. Check GitHub for similar crashes.
https://github.com/flutter/flutter/issues?q=is%3Aissue+FileSystemException%3A+Cannot+open+file%2C+path+%3D+%27build%2Fflutter_assets%2F.last_build_id%27+%28OS+Error%3A+No+such+file+or+directory%2C+errno+%3D+2%29

To report your crash to the Flutter team, first read the guide to filing a bug.
https://flutter.dev/docs/resources/bug-reports

Create a new GitHub issue by pasting this link into your browser and completing the issue template. Thank you!
https://git.io/JLXS0

flutter doctor 信息:

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel unknown, 1.22.4, on macOS 11.1 20C69 darwin-x64, locale zh-Hans-CN)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.1)
[✓] Xcode - develop for iOS and macOS (Xcode 12.3)
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.0)
[✓] VS Code (version 1.52.1)
[✓] Connected device (3 available)

• No issues found!

@kangwang1988
Copy link
Contributor

写个demo工程发出来

@ameryzhu
Copy link
Author

ameryzhu commented Dec 25, 2020

写个demo工程发出来

见附件,在main.dart中增加了一个类D,里面添加了一个含Widget参数的构造函数。main方法里面把不相关的逻辑都注释掉了。aop_impl.dart里面只保留了D的构造函数call注解。

aspectd.zip

@kangwang1988
Copy link
Contributor

kangwang1988 commented Apr 9, 2021

Resolved, see: XianyuTech/sdk@bfa0dd1

Screen Shot 2021-04-10 at 1 05 07 AM

Screen Shot 2021-04-10 at 1 05 45 AM

@kangwang1988
Copy link
Contributor

Thanks for your feedback.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants