@@ -7,156 +7,3 @@ use common::{
7
7
input:: IngotKind ,
8
8
} ;
9
9
pub use db:: DriverDataBase ;
10
-
11
- use clap:: { Parser , Subcommand } ;
12
- use hir:: hir_def:: TopLevelMod ;
13
- use resolver:: {
14
- ingot:: { config:: Config , source_files:: SourceFiles , Ingot , IngotResolver } ,
15
- Resolver ,
16
- } ;
17
-
18
- pub fn run ( opts : & Options ) {
19
- match & opts. command {
20
- Command :: Build => eprintln ! ( "`fe build` doesn't work at the moment" ) ,
21
- Command :: Check { path, core } => {
22
- let db = DriverDataBase :: default ( ) ;
23
- let mut ingot_resolver = IngotResolver :: default ( ) ;
24
-
25
- let core_ingot = if let Some ( core_path) = core {
26
- match ingot_resolver. resolve ( core_path) {
27
- Ok ( Ingot :: Folder {
28
- config :
29
- Some ( Config {
30
- version : Some ( version) ,
31
- ..
32
- } ) ,
33
- source_files :
34
- Some ( SourceFiles {
35
- root : Some ( root) ,
36
- files,
37
- } ) ,
38
- } ) => {
39
- let diagnostics = ingot_resolver. take_diagnostics ( ) ;
40
- if !diagnostics. is_empty ( ) {
41
- eprintln ! ( "an error was encountered while resolving `{core_path}`" ) ;
42
- for diagnostic in diagnostics {
43
- eprintln ! ( "{diagnostic}" )
44
- }
45
- std:: process:: exit ( 2 )
46
- }
47
- IngotBuilder :: new ( & db, "core" )
48
- . kind ( IngotKind :: Core )
49
- . version ( version)
50
- . entrypoint ( root)
51
- . files_from_contents ( files)
52
- . build ( )
53
- . 0
54
- }
55
- Ok ( Ingot :: SingleFile { .. } ) => {
56
- eprintln ! ( "standalone core ingot not supported" ) ;
57
- std:: process:: exit ( 2 )
58
- }
59
- Ok ( _) => {
60
- eprintln ! ( "an error was encountered while resolving `{core_path}`" ) ;
61
- for diagnostic in ingot_resolver. take_diagnostics ( ) {
62
- eprintln ! ( "{diagnostic}" )
63
- }
64
- std:: process:: exit ( 2 )
65
- }
66
- Err ( error) => {
67
- eprintln ! ( "an error was encountered while resolving `{core_path}`" ) ;
68
- eprintln ! ( "{error}" ) ;
69
- std:: process:: exit ( 2 )
70
- }
71
- }
72
- } else {
73
- builtin_core ( & db)
74
- } ;
75
-
76
- let local_ingot = match ingot_resolver. resolve ( path) {
77
- Ok ( Ingot :: Folder {
78
- config :
79
- Some ( Config {
80
- version : Some ( version) ,
81
- ..
82
- } ) ,
83
- source_files :
84
- Some ( SourceFiles {
85
- root : Some ( root) ,
86
- files,
87
- } ) ,
88
- } ) => {
89
- let diagnostics = ingot_resolver. take_diagnostics ( ) ;
90
- if !diagnostics. is_empty ( ) {
91
- eprintln ! ( "an error was encountered while resolving `{path}`" ) ;
92
- for diagnostic in diagnostics {
93
- eprintln ! ( "{diagnostic}" )
94
- }
95
- std:: process:: exit ( 2 )
96
- }
97
- // db.local_ingot(path, &version, &root, files, core_ingot).0
98
- IngotBuilder :: new ( & db, path)
99
- . kind ( IngotKind :: Local )
100
- . version ( version)
101
- . entrypoint ( root)
102
- . files_from_contents ( files)
103
- . build ( )
104
- . 0
105
- }
106
- Ok ( Ingot :: SingleFile { path, content } ) => {
107
- IngotBuilder :: standalone ( & db, path, content)
108
- . with_core_ingot ( core_ingot)
109
- . build ( )
110
- . 0
111
- }
112
- Ok ( _) => {
113
- eprintln ! ( "an error was encountered while resolving `{path}`" ) ;
114
- for diagnostic in ingot_resolver. take_diagnostics ( ) {
115
- eprintln ! ( "{diagnostic}" )
116
- }
117
- std:: process:: exit ( 2 )
118
- }
119
- Err ( error) => {
120
- eprintln ! ( "an error was encountered while resolving `{path}`" ) ;
121
- eprintln ! ( "{error}" ) ;
122
- std:: process:: exit ( 2 )
123
- }
124
- } ;
125
-
126
- let core_diags = db. run_on_ingot ( core_ingot) ;
127
- let local_diags = db. run_on_ingot ( local_ingot) ;
128
-
129
- if !core_diags. is_empty ( ) || !local_diags. is_empty ( ) {
130
- core_diags. emit ( & db) ;
131
- local_diags. emit ( & db) ;
132
- std:: process:: exit ( 1 ) ;
133
- }
134
- }
135
- Command :: New => eprintln ! ( "`fe new` doesn't work at the moment" ) ,
136
- }
137
- }
138
-
139
- #[ derive( Debug , Clone , Parser ) ]
140
- #[ command( version, about, long_about = None ) ]
141
- pub struct Options {
142
- #[ command( subcommand) ]
143
- pub command : Command ,
144
- }
145
-
146
- #[ derive( Debug , Clone , Subcommand ) ]
147
- pub enum Command {
148
- Build ,
149
- Check {
150
- // #[clap(default_value_t = find_project_root().unwrap_or(Utf8PathBuf::from(".")))]
151
- path : Utf8PathBuf ,
152
- #[ arg( short, long) ]
153
- core : Option < Utf8PathBuf > ,
154
- } ,
155
- New ,
156
- }
157
-
158
- fn _dump_scope_graph ( db : & DriverDataBase , top_mod : TopLevelMod ) -> String {
159
- let mut s = vec ! [ ] ;
160
- top_mod. scope_graph ( db) . write_as_dot ( db, & mut s) . unwrap ( ) ;
161
- String :: from_utf8 ( s) . unwrap ( )
162
- }
0 commit comments