@@ -2,7 +2,8 @@ import 'dart:io';
22import 'dart:isolate' ;
33
44import 'package:analyzer/dart/analysis/analysis_context.dart' ;
5- import 'package:analyzer/dart/analysis/results.dart' ;
5+ import 'package:analyzer/dart/analysis/features.dart' ;
6+ import 'package:analyzer/dart/analysis/utilities.dart' ;
67import 'package:analyzer/dart/ast/ast.dart' ;
78import 'package:analyzer/src/dart/analysis/analysis_context_collection.dart' ;
89import 'package:analyzer/src/dart/analysis/byte_store.dart' ;
@@ -18,6 +19,7 @@ import 'package:celest_cli/src/env/env_manager.dart';
1819import 'package:celest_cli/src/project/project_paths.dart' ;
1920import 'package:celest_cli/src/pub/cached_pubspec.dart' ;
2021import 'package:celest_cli/src/sdk/dart_sdk.dart' ;
22+ import 'package:celest_cli/src/utils/error.dart' ;
2123import 'package:celest_cli/src/utils/run.dart' ;
2224import 'package:logging/logging.dart' ;
2325import 'package:meta/meta.dart' ;
@@ -225,36 +227,39 @@ final class CelestProject {
225227 // the project is generated.
226228 throw StateError ('No project.dart file found in the project root.' );
227229 }
228- final projectLibrary = analysisContext.currentSession.getParsedLibrary (
229- projectDart.path,
230+
231+ final parseResult = parseFile (
232+ path: projectDart.path,
233+ featureSet: FeatureSet .fromEnableFlags2 (
234+ sdkLanguageVersion: Sdk .current.version,
235+ flags: _analysisOptions.enabledExperiments,
236+ ),
237+ throwIfDiagnostics: true ,
230238 );
231- switch (projectLibrary) {
232- case ParsedLibraryResult (: final units):
233- final declarations = units
234- .expand ((unit) => unit.unit.declarations)
235- .whereType <TopLevelVariableDeclaration >()
236- .expand ((declaration) => declaration.variables.variables);
237- for (final declaration in declarations) {
238- if (declaration.initializer
239- case MethodInvocation (
240- methodName: SimpleIdentifier (name: 'Project' ),
241- : final argumentList,
239+ final projectLibrary = parseResult.unit;
240+
241+ final declarations = projectLibrary.declarations
242+ .whereType <TopLevelVariableDeclaration >()
243+ .expand ((declaration) => declaration.variables.variables);
244+ for (final declaration in declarations) {
245+ if (declaration.initializer
246+ case MethodInvocation (
247+ methodName: SimpleIdentifier (name: 'Project' ),
248+ : final argumentList,
249+ )) {
250+ for (final argument in argumentList.arguments) {
251+ if (argument
252+ case NamedExpression (
253+ name: Label (label: SimpleIdentifier (name: 'name' )),
254+ expression: SimpleStringLiteral (value: final projectName),
242255 )) {
243- for (final argument in argumentList.arguments) {
244- if (argument
245- case NamedExpression (
246- name: Label (label: SimpleIdentifier (name: 'name' )),
247- expression: SimpleStringLiteral (value: final projectName),
248- )) {
249- return projectName;
250- }
251- }
256+ return projectName;
252257 }
253258 }
254- throw StateError ('No Project(name: "name") found in project.dart' );
255- default :
256- throw StateError ('Failed to parse project.dart' );
259+ }
257260 }
261+
262+ throw StateError ('No Project(name: "name") found in project.dart' );
258263 }
259264
260265 Future <void > close () async {
@@ -291,3 +296,11 @@ extension CelestProjectUriStorage on IsolatedNativeStorage {
291296 return uri;
292297 }
293298}
299+
300+ extension SdkExe on SdkType {
301+ String get executable => switch (this ) {
302+ SdkType .dart => Sdk .current.dart,
303+ SdkType .flutter => Sdk .current.flutter! ,
304+ _ => unreachable (),
305+ };
306+ }
0 commit comments