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

[DDC] Crash on Safari: "Duplicate parameter 'char' not allowed in function with default parameter values." #43520

Closed
creativecreatorormaybenot opened this issue Sep 22, 2020 · 5 comments
Labels
area-web Use area-web for Dart web related issues, including the DDC and dart2js compilers and JS interop. web-dev-compiler

Comments

@creativecreatorormaybenot
Copy link
Contributor

Bug

When running a Flutter Web app that uses petitparser (a Dart only package), the app crashes immediately when starting on Safari.

The app does not need to call any petitparser code - it just needs to reference the dependency in order to include it in the app.

Reproducible steps

The reproducible steps on the Flutter side can be found here. They are simply adding the petitparser dependency, referencing it, and running it on Safari.

Error

The error logs are the following:

Logs
[Error] SyntaxError: Duplicate parameter 'char' not allowed in function with default parameter values.
	(anonymous function) (optional.dart.lib.js:376)
[Error] TypeError: undefined is not an object (evaluating 'packages__petitparser__src__parser__combinator__optional$46dart.src__parser__combinator__delegate')
	load__packages__petitparser__src__parser__action__cast_dart (cast.dart.lib.js:6:84)
	execCb (require.js:1696)
	check (require.js:883)
	enable (require.js:1176)
	init (require.js:788)
	callGetModule (require.js:1203)
	completeLoad (require.js:1590)
	onScriptLoad (require.js:1717)
[Error] TypeError: undefined is not an object (evaluating 'packages__petitparser__src__parser__combinator__optional$46dart.src__core__parser')
	load__packages__petitparser__src__parser__action__pick_dart (pick.dart.lib.js:6:82)
	execCb (require.js:1696)
	check (require.js:883)
	enable (require.js:1176)
	init (require.js:788)
	callGetModule (require.js:1203)
	completeLoad (require.js:1590)
	onScriptLoad (require.js:1717)
[Error] TypeError: undefined is not an object (evaluating 'packages__petitparser__src__parser__combinator__optional$46dart.src__parser__combinator__delegate')
	load__packages__petitparser__src__parser__action__flatten_dart (flatten.dart.lib.js:6:84)
	execCb (require.js:1696)
	check (require.js:883)
	enable (require.js:1176)
	init (require.js:788)
	callGetModule (require.js:1203)
	completeLoad (require.js:1590)
	onScriptLoad (require.js:1717)
[Error] TypeError: undefined is not an object (evaluating 'packages__petitparser__src__parser__combinator__optional$46dart.src__core__parser')
	load__packages__xml__src__xml__utils__character_data_parser_dart (character_data_parser.dart.lib.js:6:82)
	execCb (require.js:1696)
	check (require.js:883)
	enable (require.js:1176)
	init (require.js:788)
	callGetModule (require.js:1203)
	completeLoad (require.js:1590)
	onScriptLoad (require.js:1717)
[Error] TypeError: undefined is not an object (evaluating 'packages__petitparser__src__parser__combinator__optional$46dart.src__parser__repeater__possesive')
	load__packages__petitparser__src__parser__repeater__separated_by_dart (separated_by.dart.lib.js:7:85)
	execCb (require.js:1696)
	check (require.js:883)
	enable (require.js:1176)
	init (require.js:788)
	callGetModule (require.js:1203)
	completeLoad (require.js:1590)
	onScriptLoad (require.js:1717)
[Error] TypeError: undefined is not an object (evaluating 'packages__petitparser__src__parser__combinator__optional$46dart.src__core__parser')
	load__packages__petitparser__src__parser__misc__epsilon_dart (epsilon.dart.lib.js:6:82)
	execCb (require.js:1696)
	check (require.js:883)
	enable (require.js:1176)
	init (require.js:788)
	callGetModule (require.js:1203)
	completeLoad (require.js:1590)
	onScriptLoad (require.js:1717)
[Error] TypeError: undefined is not an object (evaluating 'packages__petitparser__src__parser__combinator__optional$46dart.src__core__parser')
	load__packages__petitparser__src__definition__reference_dart (reference.dart.lib.js:6:82)
	execCb (require.js:1696)
	check (require.js:883)
	enable (require.js:1176)
	init (require.js:788)
	callGetModule (require.js:1203)
	completeLoad (require.js:1590)
	onScriptLoad (require.js:1717)
[Error] TypeError: undefined is not an object (evaluating 'packages__petitparser__src__parser__combinator__optional$46dart.src__core__parser')
	load__packages__petitparser__src__parser__predicate__predicate_dart (predicate.dart.lib.js:6:82)
	execCb (require.js:1696)
	check (require.js:883)
	enable (require.js:1176)
	init (require.js:788)
	callGetModule (require.js:1203)
	completeLoad (require.js:1590)
	onScriptLoad (require.js:1717)
[Error] TypeError: undefined is not an object (evaluating 'packages__petitparser__src__parser__combinator__optional$46dart.src__core__parser')
	load__packages__petitparser__src__parser__repeater__limited_dart (limited.dart.lib.js:7:82)
	execCb (require.js:1696)
	check (require.js:883)
	enable (require.js:1176)
	init (require.js:788)
	callGetModule (require.js:1203)
	completeLoad (require.js:1590)
	onScriptLoad (require.js:1717)
[Error] TypeError: undefined is not an object (evaluating 'packages__petitparser__src__parser__combinator__optional$46dart.src__parser__character__parser')
	load__packages__petitparser__src__parser__character__whitespace_dart (whitespace.dart.lib.js:7:82)
	execCb (require.js:1696)
	check (require.js:883)
	(anonymous function) (require.js:1139)
	(anonymous function) (require.js:134)
	(anonymous function) (require.js:1189)
	each (require.js:59)
	emit (require.js:1188)
	check (require.js:938)
	enable (require.js:1176)
	init (require.js:788)
	callGetModule (require.js:1203)
	completeLoad (require.js:1590)
	onScriptLoad (require.js:1717)
[Error] TypeError: undefined is not an object (evaluating 'packages__petitparser__src__parser__combinator__optional$46dart.src__parser__character__parser')
	load__packages__petitparser__src__parser__character__range_dart (range.dart.lib.js:7:82)
	execCb (require.js:1696)
	check (require.js:883)
	(anonymous function) (require.js:1139)
	(anonymous function) (require.js:134)
	(anonymous function) (require.js:1189)
	each (require.js:59)
	emit (require.js:1188)
	check (require.js:938)
	enable (require.js:1176)
	init (require.js:788)
	callGetModule (require.js:1203)
	completeLoad (require.js:1590)
	onScriptLoad (require.js:1717)
@lrhn lrhn added area-web Use area-web for Dart web related issues, including the DDC and dart2js compilers and JS interop. web-dev-compiler labels Sep 22, 2020
@sigmundch
Copy link
Member

Thanks for filing the issue.

I should point out that support for the development compiler (DDC) in Safari is not complete and we have several known issues there. We usually recommend running apps in development mode in Chrome or FF, and only run the release/deploy version (dart2js) of the program in Safari.

Sounds from your other bug that you also run into issues in Safari with the release version? I sense it may be higher priority to investigate that first?

@creativecreatorormaybenot
Copy link
Contributor Author

creativecreatorormaybenot commented Sep 22, 2020

@sigmundch Yes, that is correct. The release bug has to be something different and that is high priority while the debug one was only relevant because I am trying to debug the release one.

I am having a really hard time debugging it because I either get nothing from the console or logs that I do not know exactly how to work with (not human readable or not verbose). Ideally, I would need some way to properly debug in Safari.

Examples: I get Unhandled Promise Rejection: Error from async_patch.dart:200 in the JS console in Safari in debug mode and get errors that asset images cannot be displayed.

In release mode, the app also does not run, but I do not see any logs. We have another Flutter web app that runs on Safari just fine and the code base is partially shared, which makes it even weirder.

@smunozp
Copy link

smunozp commented Apr 22, 2021

any update on this? I'm having this issue as well in the production release of our app.

[Error] SyntaxError: Duplicate parameter 'char' not allowed in function with default parameter values.
(anonymous function) (optional.dart.lib.js:408)
[Error] TypeError: undefined is not an object (evaluating 'packages__petitparser__src__parser__combinator__optional$46dart.src__parser__combinator__delegate')
load__packages__petitparser__src__parser__action__cast_dart (cast.dart.lib.js:6:84)
execCb (require.js:1696)
check (require.js:883)
enable (require.js:1176)
init (require.js:788)
callGetModule (require.js:1203)
completeLoad (require.js:1590)
onScriptLoad (require.js:1717)
[Error] TypeError: undefined is not an object (evaluating 'packages__petitparser__src__parser__combinator__optional$46dart.src__core__parser')
load__packages__xml__src__xml__utils__character_data_parser_dart (character_data_parser.dart.lib.js:6:82)
execCb (require.js:1696)
check (require.js:883)
enable (require.js:1176)
init (require.js:788)
callGetModule (require.js:1203)
completeLoad (require.js:1590)
onScriptLoad (require.js:1717)
[Error] TypeError: undefined is not an object (evaluating 'packages__petitparser__src__parser__combinator__optional$46dart.src__core__parser')
load__packages__petitparser__src__parser__action__pick_dart (pick.dart.lib.js:6:82)
execCb (require.js:1696)
check (require.js:883)
enable (require.js:1176)
init (require.js:788)
callGetModule (require.js:1203)
completeLoad (require.js:1590)
onScriptLoad (require.js:1717)
[Error] TypeError: undefined is not an object (evaluating 'packages__petitparser__src__parser__combinator__optional$46dart.src__parser__combinator__delegate')
load__packages__petitparser__src__parser__action__flatten_dart (flatten.dart.lib.js:6:84)
execCb (require.js:1696)
check (require.js:883)
enable (require.js:1176)
init (require.js:788)
callGetModule (require.js:1203)
completeLoad (require.js:1590)
onScriptLoad (require.js:1717)
[Error] TypeError: undefined is not an object (evaluating 'packages__petitparser__src__parser__combinator__optional$46dart.src__parser__combinator__sequence')
load__packages__petitparser__src__parser__repeater__separated_by_dart (separated_by.dart.lib.js:7:84)
execCb (require.js:1696)
check (require.js:883)
enable (require.js:1176)
init (require.js:788)
callGetModule (require.js:1203)
completeLoad (require.js:1590)
onScriptLoad (require.js:1717)
[Error] TypeError: undefined is not an object (evaluating 'packages__petitparser__src__parser__combinator__optional$46dart.src__core__parser')
load__packages__petitparser__src__parser__misc__epsilon_dart (epsilon.dart.lib.js:6:82)
execCb (require.js:1696)
check (require.js:883)
enable (require.js:1176)
init (require.js:788)
callGetModule (require.js:1203)
completeLoad (require.js:1590)
onScriptLoad (require.js:1717)
[Error] TypeError: undefined is not an object (evaluating 'packages__petitparser__src__parser__combinator__optional$46dart.src__core__parser')
load__packages__petitparser__src__parser__predicate__predicate_dart (predicate.dart.lib.js:6:82)
execCb (require.js:1696)
check (require.js:883)
enable (require.js:1176)
init (require.js:788)
callGetModule (require.js:1203)
completeLoad (require.js:1590)
onScriptLoad (require.js:1717)
[Error] TypeError: undefined is not an object (evaluating 'packages__petitparser__src__parser__combinator__optional$46dart.src__core__parser')
load__packages__petitparser__src__parser__repeater__limited_dart (limited.dart.lib.js:7:82)
execCb (require.js:1696)
check (require.js:883)
enable (require.js:1176)
init (require.js:788)
callGetModule (require.js:1203)
completeLoad (require.js:1590)
onScriptLoad (require.js:1717)
[Error] TypeError: undefined is not an object (evaluating 'packages__petitparser__src__parser__combinator__optional$46dart.src__parser__character__parser')
load__packages__petitparser__src__parser__character__whitespace_dart (whitespace.dart.lib.js:7:82)
execCb (require.js:1696)
check (require.js:883)
(anonymous function) (require.js:1139)
(anonymous function) (require.js:134)
(anonymous function) (require.js:1189)
each (require.js:59)
emit (require.js:1188)
check (require.js:938)
enable (require.js:1176)
init (require.js:788)
callGetModule (require.js:1203)
completeLoad (require.js:1590)
onScriptLoad (require.js:1717)
[Error] TypeError: undefined is not an object (evaluating 'packages__petitparser__src__parser__combinator__optional$46dart.src__parser__character__parser')
load__packages__petitparser__src__parser__character__range_dart (range.dart.lib.js:7:82)
execCb (require.js:1696)
check (require.js:883)
enable (require.js:1176)
init (require.js:788)
callGetModule (require.js:1203)
completeLoad (require.js:1590)
onScriptLoad (require.js:1717)
[Error] TypeError: undefined is not an object (evaluating 'packages__petitparser__src__parser__combinator__optional$46dart.src__core__parser')
load__packages__petitparser__src__definition__reference_dart (reference.dart.lib.js:6:82)
execCb (require.js:1696)
check (require.js:883)
enable (require.js:1176)
init (require.js:788)
callGetModule (require.js:1203)
completeLoad (require.js:1590)
onScriptLoad (require.js:1717)

@sigmundch
Copy link
Member

Sorry, we don't have any updates at the moment, we have prioritized work on other areas and have not yet looked into this issue.

I worry about the problems you mention on the production version of the app though. When we fix the issue in DDC, it will not help with the error you may be hitting in production (which uses a different compiler pipeline).

@creativecreatorormaybenot was seeing a blank console in production. @smunozp - do you happen to have errors from your production version of your app? Any tips on how to create a small repro for that?

@smunozp
Copy link

smunozp commented May 1, 2021

I was able to do a workaround to make the app work on safari...

I had an async function on main to initialize firebase that was without a try-catch,
I had to delete flutter_svg and use png instead,
and I had to modify a regex on dotenv package that was not supported by safari.

hope this helps others facing a similar issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-web Use area-web for Dart web related issues, including the DDC and dart2js compilers and JS interop. web-dev-compiler
Projects
None yet
Development

No branches or pull requests

4 participants