Skip to content

Commit

Permalink
Merge pull request #43 from SpontanCombust:dev
Browse files Browse the repository at this point in the history
v0.3.1
  • Loading branch information
SpontanCombust authored Jun 15, 2024
2 parents 5ba3992 + 9803d73 commit bedd333
Show file tree
Hide file tree
Showing 89 changed files with 4,927 additions and 2,848 deletions.
41 changes: 5 additions & 36 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

54 changes: 45 additions & 9 deletions crates/analysis/src/jobs/merge_symtabs.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use witcherscript_diagnostics::*;
use crate::symbol_analysis::symbol_table::SymbolTable;
use crate::symbol_analysis::{symbol_table::SymbolTable, symbols::SymbolType};


pub fn merge_symbol_tables(
Expand All @@ -12,14 +12,50 @@ pub fn merge_symbol_tables(
.merge(source_symtab)
.into_iter()
.map(|err| {
LocatedDiagnostic {
path: err.incoming_location.abs_source_path(),
diagnostic: Diagnostic {
range: err.incoming_location.label_range,
kind: DiagnosticKind::SymbolNameTaken {
name: err.occupied_path.components().last().unwrap().name.to_string(),
precursor_range: err.occupied_location.as_ref().map(|loc| loc.label_range),
precursor_file_path: err.occupied_location.as_ref().map(|loc| loc.abs_source_path())
let (occupied_file_path, occupied_range) = err.occupied_location
.map(|loc| (Some(loc.abs_source_path()), Some(loc.label_range)))
.unwrap_or((None, None));

match (err.occupied_typ, err.incoming_typ) {
(SymbolType::MemberFunction, SymbolType::MemberFunctionReplacer) |
(SymbolType::MemberFunction, SymbolType::MemberFunctionWrapper) |
(SymbolType::GlobalFunction, SymbolType::GlobalFunctionReplacer) => {
LocatedDiagnostic {
path: err.incoming_location.abs_source_path(),
diagnostic: Diagnostic {
range: err.incoming_location.label_range,
kind: DiagnosticKind::SameContentAnnotation {
original_file_path: occupied_file_path,
original_range: occupied_range
}
}
}
},
(SymbolType::MemberFunctionReplacer, SymbolType::MemberFunction) |
(SymbolType::MemberFunctionWrapper, SymbolType::MemberFunction) |
(SymbolType::GlobalFunctionReplacer, SymbolType::GlobalFunction) => {
LocatedDiagnostic {
path: occupied_file_path.expect("Annotation symbol without location"),
diagnostic: Diagnostic {
range: occupied_range.unwrap_or_default(),
kind: DiagnosticKind::SameContentAnnotation {
original_file_path: Some(err.incoming_location.abs_source_path()),
original_range: Some(err.incoming_location.range)
}
}
}
},
_ => {
LocatedDiagnostic {
path: err.incoming_location.abs_source_path(),
diagnostic: Diagnostic {
range: err.incoming_location.label_range,
kind: DiagnosticKind::SymbolNameTaken {
name: err.occupied_path.components().last().unwrap().name.to_string(),
precursor_file_path: occupied_file_path,
precursor_range: occupied_range
}
}
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion crates/analysis/src/jobs/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ mod scan_symbols;
pub use scan_symbols::scan_symbols;

mod syntax_analysis;
pub use syntax_analysis::syntax_analysis;
pub use syntax_analysis::{syntax_analysis, contextual_syntax_analysis};

mod merge_symtabs;
pub use merge_symtabs::merge_symbol_tables;
Expand Down
Loading

0 comments on commit bedd333

Please sign in to comment.