dart-lang / sdk

The Dart SDK, including the VM, JS and Wasm compilers, analysis, core libraries, and more.
https://dart.dev
BSD 3-Clause "New" or "Revised" License
10.08k stars 1.56k forks source link

language version error should specify where it got the language version from #54075

Open goderbauer opened 10 months ago

goderbauer commented 10 months ago

I recently ran into an issue where a dart script was running with an unexpected language version:

~/dev/engine/src % ./third_party/dart/tools/sdks/dart-sdk/bin/dart third_party/dart/tools/generate_package_config.dart
third_party/dart/tools/generate_package_config.dart:6:8: Error: The 'unnamed-libraries' language feature is disabled for this library.
Try removing the package language version or setting the language version to 2.19 or higher.
library;
^

As it turned out, I had an outdated .dart_tool/package_config.json in a directory further up the tree. I wasn't aware that the dart VM would just walk up the directory tree and use any random .dart_tool/package_config.json it finds along the way. It would have saved me a lot of debugging time if the error message would have given a hint as to why it picked the particular language version that it used. In this case, it would have been super helpful if the error message pointed to the particular .dart_tool/package_config.json file that caused the particular language version to be chosen.

hellohuanlin commented 1 month ago

@goderbauer I ran into a similar issue when compiling local engine. may i ask how did you fix this issue? Which command did you run?

goderbauer commented 1 month ago

I manually walked up the directory tree and in every directory checked that there isn't a stray .dart_tool directory. If there was one, I deleted it.

hellohuanlin commented 1 month ago

How did you tell if a .dart_tool is stray or not? I have these files under my engine repo:

./src/flutter/tools/const_finder/test/fixtures/.dart_tool
./src/flutter/tools/const_finder/.dart_tool
./src/flutter/tools/api_check/.dart_tool
./src/flutter/tools/licenses/.dart_tool
./src/flutter/tools/path_ops/dart/.dart_tool
./src/flutter/tools/githooks/.dart_tool
./src/flutter/tools/android_lint/.dart_tool
./src/flutter/tools/clang_tidy/.dart_tool
./src/flutter/shell/vmservice/.dart_tool
./src/flutter/ci/.dart_tool
./src/flutter/testing/benchmark/.dart_tool
./src/flutter/testing/smoke_test_failure/.dart_tool
./src/flutter/testing/dart/.dart_tool
./src/flutter/testing/android_background_image/.dart_tool
./src/flutter/testing/litetest/.dart_tool
./src/flutter/testing/symbols/.dart_tool
./src/flutter/testing/scenario_app/.dart_tool
./src/flutter/third_party/dart/tests/standalone/http_launch_data/.dart_tool
./src/flutter/third_party/dart/tests/standalone/package/test_folder/.dart_tool
./src/flutter/third_party/dart/tests/standalone/package/scenarios/packages_file_in_parent/.dart_tool
./src/flutter/third_party/dart/tests/standalone/package/scenarios/empty_packages_file/.dart_tool
./src/flutter/third_party/dart/tests/standalone/package/scenarios/packages_option_only/sub/.dart_tool
./src/flutter/third_party/dart/tests/standalone/package/scenarios/both_dir_and_file/.dart_tool
./src/flutter/third_party/dart/tests/standalone/package/scenarios/packages_file_only/.dart_tool
./src/flutter/third_party/dart/tests/standalone/package/.dart_tool
./src/flutter/third_party/dart/tests/lib/isolate/scenarios/short_package/.dart_tool
./src/flutter/third_party/dart/tests/lib/isolate/scenarios/package_relative_spec/.dart_tool
./src/flutter/third_party/dart/tests/lib/isolate/scenarios/package_relative_root/.dart_tool
./src/flutter/third_party/dart/third_party/devtools/devtools_shared/.dart_tool
./src/flutter/third_party/dart/.dart_tool
./src/flutter/third_party/dart/pkg/frontend_server/test/fixtures/.dart_tool
./src/flutter/third_party/dart/pkg/linter/test_data/rules/.dart_tool
./src/flutter/third_party/dart/pkg/vm/testcases/transformations/to_string_transformer/.dart_tool
./src/flutter/third_party/dart/pkg/analyzer_cli/test/data/exclude_portion_of_inner_context/inner/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/test/id_testing/data/directory_testing/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/test/language_versioning/data/parts_disagreeing_has_package_2/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/test/language_versioning/data/package_to_high_default_version/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/test/language_versioning/data/both_packages_and_json/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/test/language_versioning/data/package_without_test_json/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/test/language_versioning/data/package_no_default_version/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/test/language_versioning/data/specified_packages_02/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/test/language_versioning/data/specified_packages_04/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/test/language_versioning/data/parts_disagreeing_has_package/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/test/language_versioning/data/package_default_version_is_empty/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/test/language_versioning/data/package_with_test_json/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/test/language_versioning/data/package_default_version_is_wrong_3/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/test/language_versioning/data/package_default_version_is_wrong_4/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/test/language_versioning/data/package_non_package_no_default_version/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/test/language_versioning/data/package_default_version_is_wrong_2/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/test/language_versioning/data/issue42661a/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/test/language_versioning/data/package_non_package_default_version/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/test/language_versioning/data/package_default_version/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/test/language_versioning/data/specified_packages_01/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/test/language_versioning/data/package_default_version_is_wrong/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/test/language_versioning/data/issue42661b/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/test/language_versioning/data/allowed_experiments_with_json/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/outline_extraction_testcases/factories/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/outline_extraction_testcases/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/outline_extraction_testcases/named_import_with_export_and_named_constructor_and_class_type_parameter/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/outline_extraction_testcases/split_import_export_part/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/testcases/dart2js/unresolved_imports/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/testcases/dart2js/unresolved_dart_library/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/testcases/dartdevc/unresolved_imports/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/testcases/dartdevc/unresolved_dart_library/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/testcases/general/issue52964/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/testcases/general/least_supported_version/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/testcases/general/opt_out_by_package/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/testcases/general/unresolved_imports/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/testcases/general/unresolved_dart_library/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_source/.dart_tool
./src/flutter/third_party/dart/pkg/front_end/testcases/nnbd/strong_package_not_ok_from_dill/.dart_tool
./src/flutter/flutter_frontend_server/test/fixtures/.dart_tool
./src/flutter/flutter_frontend_server/.dart_tool
goderbauer commented 1 month ago

For me the stray one was in one of the parent directories of src/flutter, and not inside of src/flutter itself.