Skip to content

Commit 05ee69f

Browse files
committed
Merge branch 'volsa/referenceto' of https://github.com/plc-lang/rusty into volsa/referenceto
2 parents 180e51b + 88f2c21 commit 05ee69f

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

compiler/plc_driver/src/cli.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ pub struct CompileParameters {
2222
#[clap(short, long, global = true, name = "output-file", help = "Write output to <output-file>")]
2323
pub output: Option<String>,
2424

25+
#[clap(
26+
long = "ast",
27+
group = "format",
28+
global = true,
29+
help = "Emit AST (Abstract Syntax Tree) as output"
30+
)]
31+
pub output_ast: bool,
32+
2533
#[clap(
2634
long = "ir",
2735
group = "format",
@@ -637,6 +645,16 @@ mod cli_tests {
637645
fn valid_output_formats() {
638646
let parameters = CompileParameters::parse(vec_of_strings!("input.st", "--ir")).unwrap();
639647
assert!(parameters.output_ir);
648+
assert!(!parameters.output_ast);
649+
assert!(!parameters.output_bit_code);
650+
assert!(!parameters.output_obj_code);
651+
assert!(!parameters.output_pic_obj);
652+
assert!(!parameters.output_shared_obj);
653+
assert!(!parameters.output_reloc_code);
654+
655+
let parameters = CompileParameters::parse(vec_of_strings!("input.st", "--ast")).unwrap();
656+
assert!(!parameters.output_ir);
657+
assert!(parameters.output_ast);
640658
assert!(!parameters.output_bit_code);
641659
assert!(!parameters.output_obj_code);
642660
assert!(!parameters.output_pic_obj);
@@ -645,6 +663,7 @@ mod cli_tests {
645663

646664
let parameters = CompileParameters::parse(vec_of_strings!("input.st", "--bc")).unwrap();
647665
assert!(!parameters.output_ir);
666+
assert!(!parameters.output_ast);
648667
assert!(parameters.output_bit_code);
649668
assert!(!parameters.output_obj_code);
650669
assert!(!parameters.output_pic_obj);
@@ -653,6 +672,7 @@ mod cli_tests {
653672

654673
let parameters = CompileParameters::parse(vec_of_strings!("input.st", "--static")).unwrap();
655674
assert!(!parameters.output_ir);
675+
assert!(!parameters.output_ast);
656676
assert!(!parameters.output_bit_code);
657677
assert!(parameters.output_obj_code);
658678
assert!(!parameters.output_pic_obj);
@@ -661,6 +681,7 @@ mod cli_tests {
661681

662682
let parameters = CompileParameters::parse(vec_of_strings!("input.st", "--pic")).unwrap();
663683
assert!(!parameters.output_ir);
684+
assert!(!parameters.output_ast);
664685
assert!(!parameters.output_bit_code);
665686
assert!(!parameters.output_obj_code);
666687
assert!(parameters.output_pic_obj);
@@ -669,6 +690,7 @@ mod cli_tests {
669690

670691
let parameters = CompileParameters::parse(vec_of_strings!("input.st", "--shared")).unwrap();
671692
assert!(!parameters.output_ir);
693+
assert!(!parameters.output_ast);
672694
assert!(!parameters.output_bit_code);
673695
assert!(!parameters.output_obj_code);
674696
assert!(!parameters.output_pic_obj);
@@ -677,6 +699,7 @@ mod cli_tests {
677699

678700
let parameters = CompileParameters::parse(vec_of_strings!("input.st", "--relocatable")).unwrap();
679701
assert!(!parameters.output_ir);
702+
assert!(!parameters.output_ast);
680703
assert!(!parameters.output_bit_code);
681704
assert!(!parameters.output_obj_code);
682705
assert!(!parameters.output_pic_obj);
@@ -685,6 +708,7 @@ mod cli_tests {
685708

686709
let parameters = CompileParameters::parse(vec_of_strings!("input.st")).unwrap();
687710
assert!(!parameters.output_ir);
711+
assert!(!parameters.output_ast);
688712
assert!(!parameters.output_bit_code);
689713
assert!(!parameters.output_obj_code);
690714
assert!(!parameters.output_pic_obj);

compiler/plc_driver/src/lib.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,11 @@ pub fn compile_with_options(compile_options: CompilationContext) -> Result<()> {
247247
.index(ctxt.provider())
248248
.annotate(ctxt.provider());
249249

250+
if compile_parameters.output_ast {
251+
println!("{:#?}", annotated_project.units);
252+
return Ok(());
253+
}
254+
250255
// 4 : Validate
251256
annotated_project.validate(&ctxt, &mut diagnostician)?;
252257

src/resolver.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -711,7 +711,7 @@ impl AnnotationMap for AnnotationMapImpl {
711711
}
712712
}
713713

714-
#[derive(Default)]
714+
#[derive(Default, Debug)]
715715
pub struct StringLiterals {
716716
pub utf08: FxHashSet<String>,
717717
pub utf16: FxHashSet<String>,

0 commit comments

Comments
 (0)