Skip to content

Commit

Permalink
Back out "BE: Switch to using a struct for eqwalizer include generated"
Browse files Browse the repository at this point in the history
Summary:
Original commit changeset: 8ed7728521e6

Original Phabricator Diff: D65342308

Reviewed By: ilya-klyuchnikov

Differential Revision: D65420063

fbshipit-source-id: 53b51c925fab066fe41f10a052c0614e2119e955
  • Loading branch information
alanz authored and facebook-github-bot committed Nov 4, 2024
1 parent 0001512 commit 86b4f7a
Show file tree
Hide file tree
Showing 15 changed files with 47 additions and 102 deletions.
17 changes: 8 additions & 9 deletions crates/elp/src/bin/eqwalizer_cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ use elp::cli::Cli;
use elp::convert;
use elp_eqwalizer::EqwalizerConfig;
use elp_eqwalizer::EqwalizerDiagnosticsDatabase;
use elp_eqwalizer::EqwalizerIncludes;
use elp_eqwalizer::Mode;
use elp_ide::diagnostics::Diagnostic;
use elp_ide::diagnostics::DiagnosticsConfig;
Expand Down Expand Up @@ -144,15 +143,15 @@ pub fn do_eqwalize_all(
set_eqwalizer_config(loaded, args.clause_coverage);
let analysis = &loaded.analysis();
let module_index = analysis.module_index(loaded.project_id)?;
let eqwalizer_includes = EqwalizerIncludes::new().set_generated(args.include_generated.into());
let include_generated = args.include_generated.into();
let pb = cli.progress(module_index.len_own() as u64, "Gathering modules");
let file_ids: Vec<FileId> = module_index
.iter_own()
.par_bridge()
.progress_with(pb.clone())
.map_with(analysis.clone(), |analysis, (_name, _source, file_id)| {
if analysis
.should_eqwalize(file_id, eqwalizer_includes)
.should_eqwalize(file_id, include_generated)
.unwrap()
{
Some(file_id)
Expand Down Expand Up @@ -212,13 +211,13 @@ pub fn do_eqwalize_app(
set_eqwalizer_config(loaded, args.clause_coverage);
let analysis = &loaded.analysis();
let module_index = analysis.module_index(loaded.project_id)?;
let eqwalizer_includes = EqwalizerIncludes::new().set_generated(args.include_generated.into());
let include_generated = args.include_generated.into();
let file_ids: Vec<FileId> = module_index
.iter_own()
.filter_map(|(_name, _source, file_id)| {
if analysis.file_app_name(file_id).ok()? == Some(AppName(args.app.clone()))
&& analysis
.should_eqwalize(file_id, eqwalizer_includes)
.should_eqwalize(file_id, include_generated)
.unwrap()
{
Some(file_id)
Expand Down Expand Up @@ -262,7 +261,7 @@ pub fn eqwalize_target(
let buck_target = buck_target.strip_suffix(':').unwrap_or(buck_target);

let analysis = &loaded.analysis();
let eqwalizer_includes = EqwalizerIncludes::new().set_generated(args.include_generated.into());
let include_generated = args.include_generated.into();
let mut file_ids: Vec<FileId> = Default::default();
let mut at_least_one_found = false;
let exact_match = buck_target.contains(':');
Expand All @@ -279,7 +278,7 @@ pub fn eqwalize_target(
if let Some(file_id) = loaded.vfs.file_id(&vfs_path) {
at_least_one_found = true;
if analysis
.should_eqwalize(file_id, eqwalizer_includes)
.should_eqwalize(file_id, include_generated)
.unwrap()
{
file_ids.push(file_id);
Expand Down Expand Up @@ -330,7 +329,7 @@ pub fn eqwalize_stats(
build::compile_deps(&loaded, cli)?;
let analysis = &loaded.analysis();
let module_index = analysis.module_index(loaded.project_id)?;
let eqwalizer_includes = EqwalizerIncludes::new().set_generated(args.include_generated.into());
let include_generated = args.include_generated.into();
let project_id = loaded.project_id;
let pb = cli.progress(module_index.len_own() as u64, "Computing stats");
let stats: FxHashMap<FileId, (ModuleName, Vec<Diagnostic>)> = module_index
Expand All @@ -339,7 +338,7 @@ pub fn eqwalize_stats(
.progress_with(pb.clone())
.map_with(analysis.clone(), |analysis, (name, _source, file_id)| {
if analysis
.should_eqwalize(file_id, eqwalizer_includes)
.should_eqwalize(file_id, include_generated)
.expect("cancelled")
{
analysis
Expand Down
4 changes: 2 additions & 2 deletions crates/elp/src/bin/glean.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ use elp::build::types::LoadResult;
use elp::cli::Cli;
use elp_eqwalizer::ast::Pos;
use elp_eqwalizer::EqwalizerDiagnostics;
use elp_eqwalizer::EqwalizerIncludes;
use elp_eqwalizer::IncludeGenerated;
use elp_ide::elp_ide_db::docs::DocDatabase;
use elp_ide::elp_ide_db::elp_base_db::module_name;
use elp_ide::elp_ide_db::elp_base_db::path_for_file;
Expand Down Expand Up @@ -1371,7 +1371,7 @@ impl GleanIndexer {
vars: FxHashMap<&Location, &String>,
) -> Vec<VarDecl> {
let mut result = vec![];
if !db.is_eqwalizer_enabled(file_id, EqwalizerIncludes::new()) {
if !db.is_eqwalizer_enabled(file_id, IncludeGenerated::No) {
return result;
}
let module_diagnostics = db.eqwalizer_diagnostics_by_project(project_id, vec![file_id]);
Expand Down
11 changes: 2 additions & 9 deletions crates/elp/src/bin/lint_cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ use elp::cli::Cli;
use elp::convert;
use elp::otp_file_to_ignore;
use elp::read_lint_config_file;
use elp_eqwalizer::EqwalizerIncludes;
use elp_eqwalizer::Mode;
use elp_ide::diagnostics;
use elp_ide::diagnostics::DiagnosticsConfig;
Expand Down Expand Up @@ -193,10 +192,7 @@ fn do_parse_one(
}
} else {
if let Some(diags) = db
.eqwalizer_diagnostics_for_file(
file_id,
EqwalizerIncludes::new().set_generated(args.include_generated.into()),
)
.eqwalizer_diagnostics_for_file(file_id, args.include_generated.into())
.unwrap()
{
diagnostics.set_eqwalizer(file_id, diags);
Expand All @@ -205,10 +201,7 @@ fn do_parse_one(
}
if args.include_eqwalizer_diagnostics {
if let Some(diags) = db
.eqwalizer_diagnostics_for_file(
file_id,
EqwalizerIncludes::new().set_generated(args.include_generated.into()),
)
.eqwalizer_diagnostics_for_file(file_id, args.include_generated.into())
.unwrap()
{
diagnostics.set_eqwalizer(file_id, diags);
Expand Down
4 changes: 2 additions & 2 deletions crates/elp/src/bin/reporting.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ use elp::arc_types;
use elp::build::types::LoadResult;
use elp::cli::Cli;
use elp::convert;
use elp_eqwalizer::EqwalizerIncludes;
use elp_eqwalizer::IncludeGenerated;
use elp_ide::elp_ide_db::elp_base_db::AbsPath;
use elp_ide::elp_ide_db::elp_base_db::FileId;
use elp_ide::elp_ide_db::elp_base_db::VfsPath;
Expand Down Expand Up @@ -223,7 +223,7 @@ impl<'a> Reporter for JsonReporter<'a> {
let line_index = self.analysis.line_index(file_id)?;
let eqwalizer_enabled = self
.analysis
.is_eqwalizer_enabled(file_id, EqwalizerIncludes::new().generated())
.is_eqwalizer_enabled(file_id, IncludeGenerated::Yes)
.unwrap();
let file_path = &self.loaded.vfs.file_path(file_id);
let root_path = &self
Expand Down
10 changes: 3 additions & 7 deletions crates/elp/src/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ use crossbeam_channel::Sender;
use dispatch::NotificationDispatcher;
use elp_eqwalizer::ast::Pos;
use elp_eqwalizer::types::Type;
use elp_eqwalizer::EqwalizerIncludes;
use elp_eqwalizer::IncludeGenerated;
use elp_ide::diagnostics;
use elp_ide::diagnostics::DiagnosticsConfig;
use elp_ide::diagnostics::LabeledDiagnostics;
Expand Down Expand Up @@ -1531,11 +1531,7 @@ impl Server {
self.cache_pool.handle.spawn_with_sender(move |sender| {
while !files.is_empty() {
let file_id = files.remove(files.len() - 1);
match snapshot.update_cache_for_file(
file_id,
EqwalizerIncludes::new(),
eqwalize_all,
) {
match snapshot.update_cache_for_file(file_id, IncludeGenerated::No, eqwalize_all) {
Ok(_) => {}
Err(_) => {
// Got canceled
Expand Down Expand Up @@ -1574,7 +1570,7 @@ impl Server {
for (_, _, file_id) in module_index.iter_own() {
match snapshot
.analysis
.should_eqwalize(file_id, EqwalizerIncludes::new())
.should_eqwalize(file_id, IncludeGenerated::No)
{
Ok(true) => {
files.push(file_id);
Expand Down
13 changes: 5 additions & 8 deletions crates/elp/src/snapshot.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ use anyhow::Context;
use anyhow::Result;
use elp_eqwalizer::ast::Pos;
use elp_eqwalizer::types::Type;
use elp_eqwalizer::EqwalizerIncludes;
use elp_eqwalizer::IncludeGenerated;
use elp_ide::diagnostics;
use elp_ide::diagnostics::DiagnosticsConfig;
use elp_ide::diagnostics::LabeledDiagnostics;
Expand Down Expand Up @@ -166,12 +166,12 @@ impl Snapshot {
pub fn update_cache_for_file(
&self,
file_id: FileId,
eqwalizer_includes: EqwalizerIncludes,
include_generated: IncludeGenerated,
optimize_for_eqwalizer: bool,
) -> Result<()> {
let _ = self.analysis.def_map(file_id)?;
if optimize_for_eqwalizer {
let should_eqwalize = self.analysis.should_eqwalize(file_id, eqwalizer_includes)?;
let should_eqwalize = self.analysis.should_eqwalize(file_id, include_generated)?;
if should_eqwalize {
let _ = self.analysis.module_ast(
file_id,
Expand Down Expand Up @@ -213,7 +213,7 @@ impl Snapshot {
let file_url = self.file_id_to_url(file_id);
let _timer = timeit_with_telemetry!(TelemetryData::EqwalizerDiagnostics { file_url });
self.analysis
.eqwalizer_diagnostics_for_file(file_id, EqwalizerIncludes::new().generated())
.eqwalizer_diagnostics_for_file(file_id, IncludeGenerated::Yes)
.ok()?
}

Expand All @@ -227,10 +227,7 @@ impl Snapshot {
let file_ids: Vec<FileId> = module_index
.iter_own()
.filter_map(|(_, _, file_id)| {
if let Ok(true) = self
.analysis
.should_eqwalize(file_id, EqwalizerIncludes::new())
{
if let Ok(true) = self.analysis.should_eqwalize(file_id, IncludeGenerated::No) {
Some(file_id)
} else {
None
Expand Down
4 changes: 2 additions & 2 deletions crates/elp/tests/slow-tests/buck_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ mod tests {

use elp::build::load;
use elp::cli::Fake;
use elp_eqwalizer::EqwalizerIncludes;
use elp_eqwalizer::IncludeGenerated;
use elp_ide::elp_ide_db::elp_base_db::AbsPath;
use elp_ide::elp_ide_db::elp_base_db::IncludeOtp;
use elp_ide::erlang_service::Format;
Expand Down Expand Up @@ -71,7 +71,7 @@ mod tests {
.unwrap();
assert_eq!(ast.errors, vec![]);
let eq_enabled = analysis
.is_eqwalizer_enabled(file_id, EqwalizerIncludes::new())
.is_eqwalizer_enabled(file_id, IncludeGenerated::No)
.expect(&format!(
"Failed to check if eqwalizer enabled for {module}"
));
Expand Down
2 changes: 0 additions & 2 deletions crates/eqwalizer/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,7 @@ use crate::ipc::EqWAlizerASTFormat;
pub mod analyses;
pub mod ast;
pub use elp_types_db::eqwalizer::types;
pub use elp_types_db::EqwalizerIncludes;
pub use elp_types_db::IncludeGenerated;
pub use elp_types_db::IncludeTests;

#[derive(Clone, Eq, PartialEq, Debug)]
pub enum Mode {
Expand Down
4 changes: 2 additions & 2 deletions crates/hir/src/test_db.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ use elp_base_db::FileRange;
use elp_base_db::SourceDatabase;
use elp_base_db::Upcast;
use elp_types_db::eqwalizer;
use elp_types_db::EqwalizerIncludes;
use elp_types_db::IncludeGenerated;
use elp_types_db::TypedSemantic;

use crate::db::InternDatabase;
Expand Down Expand Up @@ -69,7 +69,7 @@ impl TypedSemantic for TestDB {
fn eqwalizer_diagnostics(
&self,
_file_id: FileId,
_eqwalizer_includes: EqwalizerIncludes,
_include_generated: IncludeGenerated,
) -> Option<Vec<eqwalizer::EqwalizerDiagnostic>> {
panic!("Eqwalizer data is not available in HIR tests")
}
Expand Down
6 changes: 3 additions & 3 deletions crates/ide/src/diagnostics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ use elp_syntax::SyntaxKind;
use elp_syntax::SyntaxNode;
use elp_syntax::TextRange;
use elp_syntax::TextSize;
use elp_types_db::EqwalizerIncludes;
use elp_types_db::IncludeGenerated;
use elp_types_db::TypedSemantic;
use erlang_service::CompileOption;
use fxhash::FxHashMap;
Expand Down Expand Up @@ -1245,9 +1245,9 @@ fn label_erlang_service_diagnostics(
pub fn eqwalizer_diagnostics(
db: &RootDatabase,
file_id: FileId,
eqwalizer_includes: EqwalizerIncludes,
include_generated: IncludeGenerated,
) -> Option<Vec<Diagnostic>> {
let eqwalizer_diagnostics = db.eqwalizer_diagnostics(file_id, eqwalizer_includes)?;
let eqwalizer_diagnostics = db.eqwalizer_diagnostics(file_id, include_generated)?;
// Because of the way db.eqwalizer_diagnostics() is implemented,
// we only get diagnostics if it is enabled.
let eqwalizer_enabled = true;
Expand Down
5 changes: 2 additions & 3 deletions crates/ide/src/fixture.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ use elp_ide_db::elp_base_db::FileRange;
use elp_ide_db::elp_base_db::SourceDatabase;
use elp_ide_db::RootDatabase;
use elp_project_model::test_fixture::DiagnosticsEnabled;
use elp_types_db::EqwalizerIncludes;

use crate::diagnostics::AdhocSemanticDiagnostics;
use crate::diagnostics::DiagnosticsConfig;
Expand Down Expand Up @@ -137,9 +136,9 @@ pub fn diagnostics_for(
}
}
if *use_eqwalizer {
let eqwalizer_includes = EqwalizerIncludes::new().generated();
let include_generated = elp_types_db::IncludeGenerated::Yes;
if let Some(diags) = analysis
.eqwalizer_diagnostics_for_file(file_id, eqwalizer_includes)
.eqwalizer_diagnostics_for_file(file_id, include_generated)
.unwrap()
{
diagnostics.set_eqwalizer(file_id, diags);
Expand Down
14 changes: 7 additions & 7 deletions crates/ide/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ use elp_syntax::AstNode;
use elp_syntax::SmolStr;
use elp_types_db::eqwalizer;
use elp_types_db::eqwalizer::types::Type;
use elp_types_db::EqwalizerIncludes;
use elp_types_db::IncludeGenerated;
use erlang_service::CompileOption;
use expand_macro::ExpandedMacro;
use handlers::get_docs;
Expand Down Expand Up @@ -232,20 +232,20 @@ impl Analysis {
pub fn should_eqwalize(
&self,
file_id: FileId,
eqwalizer_includes: EqwalizerIncludes,
include_generated: IncludeGenerated,
) -> Cancellable<bool> {
let is_in_app = self.file_app_type(file_id).ok() == Some(Some(AppType::App));
Ok(is_in_app && self.is_eqwalizer_enabled(file_id, eqwalizer_includes)?)
Ok(is_in_app && self.is_eqwalizer_enabled(file_id, include_generated)?)
}

/// Computes the set of eqwalizer diagnostics for the given files,
/// including checking for disabled. Returns standard diagnostics.
pub fn eqwalizer_diagnostics_for_file(
&self,
file_id: FileId,
eqwalizer_includes: EqwalizerIncludes,
include_generated: IncludeGenerated,
) -> Cancellable<Option<Vec<Diagnostic>>> {
self.with_db(|db| diagnostics::eqwalizer_diagnostics(db, file_id, eqwalizer_includes))
self.with_db(|db| diagnostics::eqwalizer_diagnostics(db, file_id, include_generated))
}

/// Computes the set of eqwalizer diagnostics for the given project and files,
Expand Down Expand Up @@ -363,9 +363,9 @@ impl Analysis {
pub fn is_eqwalizer_enabled(
&self,
file_id: FileId,
eqwalizer_includes: EqwalizerIncludes,
include_generated: IncludeGenerated,
) -> Cancellable<bool> {
self.with_db(|db| db.is_eqwalizer_enabled(file_id, eqwalizer_includes))
self.with_db(|db| db.is_eqwalizer_enabled(file_id, include_generated))
}

/// ETF for the module's abstract forms
Expand Down
Loading

0 comments on commit 86b4f7a

Please sign in to comment.