Skip to content

Commit f195629

Browse files
authored
refactor: remove ErrorSpan in dependency trait (#7841)
feat: remove ErrorSpan in dependency trait
1 parent 8134f86 commit f195629

29 files changed

+103
-109
lines changed

crates/rspack_core/src/concatenated_module.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1607,7 +1607,7 @@ impl ConcatenatedModule {
16071607
source_order: dep
16081608
.source_order()
16091609
.expect("source order should not be empty"),
1610-
range_start: dep.span().map(|span| span.start),
1610+
range_start: dep.range().map(|range| range.start),
16111611
})
16121612
})
16131613
.collect::<Vec<_>>();

crates/rspack_core/src/context_module_factory.rs

+7-4
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ use rspack_regex::RspackRegex;
77
use tracing::instrument;
88

99
use crate::{
10-
resolve, ContextModule, ContextModuleOptions, DependencyCategory, ModuleExt, ModuleFactory,
11-
ModuleFactoryCreateData, ModuleFactoryResult, ModuleIdentifier, RawModule, ResolveArgs,
12-
ResolveOptionsWithDependencyType, ResolveResult, Resolver, ResolverFactory, SharedPluginDriver,
10+
resolve, ContextModule, ContextModuleOptions, DependencyCategory, ErrorSpan, ModuleExt,
11+
ModuleFactory, ModuleFactoryCreateData, ModuleFactoryResult, ModuleIdentifier, RawModule,
12+
ResolveArgs, ResolveOptionsWithDependencyType, ResolveResult, Resolver, ResolverFactory,
13+
SharedPluginDriver,
1314
};
1415

1516
#[derive(Clone)]
@@ -221,7 +222,9 @@ impl ContextModuleFactory {
221222
specifier,
222223
dependency_type: dependency.dependency_type(),
223224
dependency_category: dependency.category(),
224-
span: dependency.span(),
225+
span: dependency
226+
.range()
227+
.map(|range| ErrorSpan::new(range.start, range.end)),
225228
resolve_options: data.resolve_options.clone(),
226229
resolve_to_context: true,
227230
optional: dependency.get_optional(),

crates/rspack_core/src/dependency/dependency_trait.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,15 @@ use swc_core::ecma::atoms::Atom;
99
use super::dependency_template::AsDependencyTemplate;
1010
use super::module_dependency::*;
1111
use super::ExportsSpec;
12+
use super::RealDependencyLocation;
1213
use super::{DependencyCategory, DependencyId, DependencyType};
1314
use crate::create_exports_object_referenced;
1415
use crate::AsContextDependency;
1516
use crate::ExtendedReferencedExport;
1617
use crate::ImportAttributes;
1718
use crate::ModuleLayer;
1819
use crate::RuntimeSpec;
19-
use crate::{ConnectionState, Context, ErrorSpan, ModuleGraph, UsedByExports};
20+
use crate::{ConnectionState, Context, ModuleGraph, UsedByExports};
2021

2122
#[derive(Debug, Clone, Copy)]
2223
pub enum AffectType {
@@ -77,7 +78,7 @@ pub trait Dependency:
7778
None
7879
}
7980

80-
fn span(&self) -> Option<ErrorSpan> {
81+
fn range(&self) -> Option<&RealDependencyLocation> {
8182
None
8283
}
8384

crates/rspack_core/src/dependency/module_dependency.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ pub trait ModuleDependency: Dependency {
1515
/// This is only intended used to display better diagnostics.
1616
/// So it might not be precise as it is using [crate::Dependency::span] as the default value.
1717
fn source_span(&self) -> Option<ErrorSpan> {
18-
self.span()
18+
self
19+
.range()
20+
.map(|range| ErrorSpan::new(range.start, range.end))
1921
}
2022

2123
// TODO: move to ModuleGraphConnection

crates/rspack_plugin_css/src/dependency/compose.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use rspack_core::{
22
AsContextDependency, AsDependencyTemplate, Dependency, DependencyCategory, DependencyId,
3-
DependencyType, ErrorSpan, ModuleDependency, RealDependencyLocation,
3+
DependencyType, ModuleDependency, RealDependencyLocation,
44
};
55

66
#[derive(Debug, Clone)]
@@ -33,8 +33,8 @@ impl Dependency for CssComposeDependency {
3333
&DependencyType::CssCompose
3434
}
3535

36-
fn span(&self) -> Option<ErrorSpan> {
37-
Some(ErrorSpan::new(self.range.start, self.range.end))
36+
fn range(&self) -> Option<&RealDependencyLocation> {
37+
Some(&self.range)
3838
}
3939

4040
fn could_affect_referencing_module(&self) -> rspack_core::AffectType {

crates/rspack_plugin_css/src/dependency/import.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use rspack_core::{
22
AsContextDependency, Compilation, Dependency, DependencyCategory, DependencyId,
3-
DependencyTemplate, DependencyType, ErrorSpan, ModuleDependency, RealDependencyLocation,
4-
RuntimeSpec, TemplateContext, TemplateReplaceSource,
3+
DependencyTemplate, DependencyType, ModuleDependency, RealDependencyLocation, RuntimeSpec,
4+
TemplateContext, TemplateReplaceSource,
55
};
66

77
#[derive(Debug, Clone)]
@@ -34,8 +34,8 @@ impl Dependency for CssImportDependency {
3434
&DependencyType::CssImport
3535
}
3636

37-
fn span(&self) -> Option<ErrorSpan> {
38-
Some(ErrorSpan::new(self.range.start, self.range.end))
37+
fn range(&self) -> Option<&RealDependencyLocation> {
38+
Some(&self.range)
3939
}
4040

4141
fn could_affect_referencing_module(&self) -> rspack_core::AffectType {

crates/rspack_plugin_css/src/dependency/url.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use rspack_core::{
22
AsContextDependency, CodeGenerationDataFilename, CodeGenerationDataUrl, Compilation, Dependency,
3-
DependencyCategory, DependencyId, DependencyTemplate, DependencyType, ErrorSpan,
4-
ModuleDependency, ModuleIdentifier, PublicPath, RealDependencyLocation, RuntimeSpec,
5-
TemplateContext, TemplateReplaceSource,
3+
DependencyCategory, DependencyId, DependencyTemplate, DependencyType, ModuleDependency,
4+
ModuleIdentifier, PublicPath, RealDependencyLocation, RuntimeSpec, TemplateContext,
5+
TemplateReplaceSource,
66
};
77

88
use crate::utils::{css_escape_string, AUTO_PUBLIC_PATH_PLACEHOLDER};
@@ -64,8 +64,8 @@ impl Dependency for CssUrlDependency {
6464
&DependencyType::CssUrl
6565
}
6666

67-
fn span(&self) -> Option<ErrorSpan> {
68-
Some(ErrorSpan::new(self.range.start, self.range.end))
67+
fn range(&self) -> Option<&RealDependencyLocation> {
68+
Some(&self.range)
6969
}
7070

7171
fn could_affect_referencing_module(&self) -> rspack_core::AffectType {

crates/rspack_plugin_extract_css/src/css_dependency.rs

+8-10
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use std::path::PathBuf;
33
use rspack_collections::IdentifierSet;
44
use rspack_core::{
55
AffectType, AsContextDependency, AsDependencyTemplate, ConnectionState, Dependency,
6-
DependencyCategory, DependencyId, ModuleDependency, ModuleGraph,
6+
DependencyCategory, DependencyId, ModuleDependency, ModuleGraph, RealDependencyLocation,
77
};
88
use rustc_hash::FxHashSet;
99

@@ -24,8 +24,9 @@ pub struct CssDependency {
2424
pub(crate) identifier_index: u32,
2525

2626
// determine module's postOrderIndex
27-
pub(crate) order_index: u32,
28-
27+
// @TODO(shulaoda) Does this have any additional side effects?
28+
// pub(crate) order_index: u32,
29+
range: RealDependencyLocation,
2930
resource_identifier: String,
3031
pub(crate) cacheable: bool,
3132
pub(crate) file_dependencies: FxHashSet<PathBuf>,
@@ -45,7 +46,7 @@ impl CssDependency {
4546
supports: Option<String>,
4647
source_map: Option<String>,
4748
identifier_index: u32,
48-
order_index: u32,
49+
range: RealDependencyLocation,
4950
cacheable: bool,
5051
file_dependencies: FxHashSet<PathBuf>,
5152
context_dependencies: FxHashSet<PathBuf>,
@@ -63,7 +64,7 @@ impl CssDependency {
6364
supports,
6465
source_map,
6566
identifier_index,
66-
order_index,
67+
range,
6768
resource_identifier,
6869
cacheable,
6970
file_dependencies,
@@ -107,11 +108,8 @@ impl Dependency for CssDependency {
107108
// it can keep the right order, but Rspack uses HashSet,
108109
// when determining the postOrderIndex, Rspack uses
109110
// dependency span to set correct order
110-
fn span(&self) -> Option<rspack_core::ErrorSpan> {
111-
Some(rspack_core::ErrorSpan {
112-
start: self.order_index,
113-
end: self.order_index + 1,
114-
})
111+
fn range(&self) -> Option<&RealDependencyLocation> {
112+
Some(&self.range)
115113
}
116114

117115
fn get_layer(&self) -> Option<&rspack_core::ModuleLayer> {

crates/rspack_plugin_extract_css/src/parser_plugin.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use rspack_core::BoxDependency;
1+
use rspack_core::{BoxDependency, RealDependencyLocation};
22
use rspack_plugin_javascript::{visitors::JavascriptParser, JavascriptParserPlugin};
33
use rspack_util::fx_hash::FxDashMap;
44
use serde::Deserialize;
@@ -60,7 +60,7 @@ impl JavascriptParserPlugin for PluginCssExtractParserPlugin {
6060
supports.clone(),
6161
source_map.clone(),
6262
*identifier_index,
63-
index as u32,
63+
RealDependencyLocation::new(index as u32, (index + 1) as u32),
6464
parser.build_info.cacheable,
6565
parser.build_info.file_dependencies.clone(),
6666
parser.build_info.context_dependencies.clone(),

crates/rspack_plugin_javascript/src/dependency/commonjs/common_js_full_require_dependency.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use rspack_core::{
55
};
66
use rspack_core::{AsContextDependency, Dependency, DependencyCategory};
77
use rspack_core::{DependencyId, DependencyTemplate};
8-
use rspack_core::{DependencyType, ErrorSpan, ModuleDependency};
8+
use rspack_core::{DependencyType, ModuleDependency};
99
use rspack_core::{TemplateContext, TemplateReplaceSource};
1010
use swc_core::atoms::Atom;
1111

@@ -58,8 +58,8 @@ impl Dependency for CommonJsFullRequireDependency {
5858
Some(self.range.to_string())
5959
}
6060

61-
fn span(&self) -> Option<ErrorSpan> {
62-
Some(ErrorSpan::new(self.range.start, self.range.end))
61+
fn range(&self) -> Option<&RealDependencyLocation> {
62+
Some(&self.range)
6363
}
6464

6565
fn get_referenced_exports(

crates/rspack_plugin_javascript/src/dependency/commonjs/common_js_require_dependency.rs

+3-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use rspack_core::{module_id, Compilation, RealDependencyLocation, RuntimeSpec};
22
use rspack_core::{AsContextDependency, Dependency, DependencyCategory};
33
use rspack_core::{DependencyId, DependencyTemplate};
4-
use rspack_core::{DependencyType, ErrorSpan, ModuleDependency};
4+
use rspack_core::{DependencyType, ModuleDependency};
55
use rspack_core::{TemplateContext, TemplateReplaceSource};
66

77
#[derive(Debug, Clone)]
@@ -47,11 +47,8 @@ impl Dependency for CommonJsRequireDependency {
4747
&DependencyType::CjsRequire
4848
}
4949

50-
fn span(&self) -> Option<ErrorSpan> {
51-
self
52-
.range
53-
.clone()
54-
.map(|range| ErrorSpan::new(range.start, range.end))
50+
fn range(&self) -> Option<&RealDependencyLocation> {
51+
self.range.as_ref()
5552
}
5653

5754
fn could_affect_referencing_module(&self) -> rspack_core::AffectType {

crates/rspack_plugin_javascript/src/dependency/commonjs/require_resolve_dependency.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use rspack_core::{
22
module_id, AsContextDependency, Compilation, Dependency, DependencyCategory, DependencyId,
3-
DependencyTemplate, DependencyType, ErrorSpan, ExtendedReferencedExport, ModuleDependency,
4-
ModuleGraph, RealDependencyLocation, RuntimeSpec, TemplateContext, TemplateReplaceSource,
3+
DependencyTemplate, DependencyType, ExtendedReferencedExport, ModuleDependency, ModuleGraph,
4+
RealDependencyLocation, RuntimeSpec, TemplateContext, TemplateReplaceSource,
55
};
66

77
#[derive(Debug, Clone)]
@@ -38,8 +38,8 @@ impl Dependency for RequireResolveDependency {
3838
&DependencyType::RequireResolve
3939
}
4040

41-
fn span(&self) -> Option<ErrorSpan> {
42-
Some(ErrorSpan::new(self.range.start, self.range.end))
41+
fn range(&self) -> Option<&RealDependencyLocation> {
42+
Some(&self.range)
4343
}
4444

4545
fn get_referenced_exports(

crates/rspack_plugin_javascript/src/dependency/context/common_js_require_context_dependency.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use rspack_core::{
33
};
44
use rspack_core::{ContextOptions, Dependency, TemplateReplaceSource};
55
use rspack_core::{DependencyCategory, DependencyId, DependencyTemplate};
6-
use rspack_core::{DependencyType, ErrorSpan, TemplateContext};
6+
use rspack_core::{DependencyType, TemplateContext};
77

88
use super::{
99
context_dependency_template_as_require_call, create_resource_identifier_for_context_dependency,
@@ -51,8 +51,8 @@ impl Dependency for CommonJsRequireContextDependency {
5151
&DependencyType::CommonJSRequireContext
5252
}
5353

54-
fn span(&self) -> Option<ErrorSpan> {
55-
Some(ErrorSpan::new(self.range.start, self.range.end))
54+
fn range(&self) -> Option<&RealDependencyLocation> {
55+
Some(&self.range)
5656
}
5757

5858
fn could_affect_referencing_module(&self) -> rspack_core::AffectType {

crates/rspack_plugin_javascript/src/dependency/context/import_context_dependency.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use rspack_core::{
33
};
44
use rspack_core::{ContextOptions, Dependency, TemplateReplaceSource};
55
use rspack_core::{DependencyCategory, DependencyId, DependencyTemplate};
6-
use rspack_core::{DependencyType, ErrorSpan, TemplateContext};
6+
use rspack_core::{DependencyType, TemplateContext};
77

88
use super::{
99
context_dependency_template_as_require_call, create_resource_identifier_for_context_dependency,
@@ -51,8 +51,8 @@ impl Dependency for ImportContextDependency {
5151
&DependencyType::ImportContext
5252
}
5353

54-
fn span(&self) -> Option<ErrorSpan> {
55-
Some(ErrorSpan::new(self.range.start, self.range.end))
54+
fn range(&self) -> Option<&RealDependencyLocation> {
55+
Some(&self.range)
5656
}
5757

5858
fn could_affect_referencing_module(&self) -> rspack_core::AffectType {

crates/rspack_plugin_javascript/src/dependency/context/import_meta_context_dependency.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use rspack_core::{
33
RuntimeSpec,
44
};
55
use rspack_core::{ContextOptions, Dependency, DependencyCategory, DependencyId};
6-
use rspack_core::{DependencyTemplate, DependencyType, ErrorSpan};
6+
use rspack_core::{DependencyTemplate, DependencyType};
77
use rspack_core::{TemplateContext, TemplateReplaceSource};
88

99
use super::create_resource_identifier_for_context_dependency;
@@ -43,8 +43,8 @@ impl Dependency for ImportMetaContextDependency {
4343
&DependencyType::ImportMetaContext
4444
}
4545

46-
fn span(&self) -> Option<ErrorSpan> {
47-
Some(ErrorSpan::new(self.range.start, self.range.end))
46+
fn range(&self) -> Option<&RealDependencyLocation> {
47+
Some(&self.range)
4848
}
4949

5050
fn could_affect_referencing_module(&self) -> rspack_core::AffectType {

crates/rspack_plugin_javascript/src/dependency/context/require_context_dependency.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use rspack_core::{
33
RuntimeSpec,
44
};
55
use rspack_core::{ContextOptions, Dependency, DependencyCategory, DependencyId};
6-
use rspack_core::{DependencyTemplate, DependencyType, ErrorSpan};
6+
use rspack_core::{DependencyTemplate, DependencyType};
77
use rspack_core::{TemplateContext, TemplateReplaceSource};
88

99
use super::create_resource_identifier_for_context_dependency;
@@ -43,8 +43,8 @@ impl Dependency for RequireContextDependency {
4343
&DependencyType::RequireContext
4444
}
4545

46-
fn span(&self) -> Option<ErrorSpan> {
47-
Some(ErrorSpan::new(self.range.start, self.range.end))
46+
fn range(&self) -> Option<&RealDependencyLocation> {
47+
Some(&self.range)
4848
}
4949

5050
fn could_affect_referencing_module(&self) -> rspack_core::AffectType {

crates/rspack_plugin_javascript/src/dependency/esm/harmony_export_imported_specifier_dependency.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ use rspack_core::{
88
process_export_info, property_access, property_name, string_of_used_name, AsContextDependency,
99
Compilation, ConditionalInitFragment, ConnectionState, Dependency, DependencyCategory,
1010
DependencyCondition, DependencyConditionFn, DependencyId, DependencyTemplate, DependencyType,
11-
ErrorSpan, ExportInfo, ExportInfoProvided, ExportNameOrSpec, ExportPresenceMode, ExportSpec,
12-
ExportsInfo, ExportsOfExportsSpec, ExportsSpec, ExportsType, ExtendedReferencedExport,
11+
ExportInfo, ExportInfoProvided, ExportNameOrSpec, ExportPresenceMode, ExportSpec, ExportsInfo,
12+
ExportsOfExportsSpec, ExportsSpec, ExportsType, ExtendedReferencedExport,
1313
HarmonyExportInitFragment, ImportAttributes, InitFragmentExt, InitFragmentKey, InitFragmentStage,
1414
JavascriptParserOptions, ModuleDependency, ModuleGraph, ModuleIdentifier, NormalInitFragment,
1515
RealDependencyLocation, RuntimeCondition, RuntimeGlobals, RuntimeSpec, Template, TemplateContext,
@@ -866,7 +866,7 @@ impl HarmonyExportImportedSpecifierDependency {
866866
let parent_module_identifier = module_graph
867867
.get_parent_module(&self.id)
868868
.expect("should have parent module for dependency");
869-
let mut diagnostic = if let Some(span) = self.span()
869+
let mut diagnostic = if let Some(span) = self.range()
870870
&& let Some(parent_module) = module_graph.module_by_identifier(parent_module_identifier)
871871
&& let Some(source) = parent_module.original_source().map(|s| s.source())
872872
{
@@ -1054,8 +1054,8 @@ impl Dependency for HarmonyExportImportedSpecifierDependency {
10541054
Some(self.range.to_string())
10551055
}
10561056

1057-
fn span(&self) -> Option<ErrorSpan> {
1058-
Some(ErrorSpan::new(self.range.start, self.range.end))
1057+
fn range(&self) -> Option<&RealDependencyLocation> {
1058+
Some(&self.range)
10591059
}
10601060

10611061
fn category(&self) -> &DependencyCategory {

crates/rspack_plugin_javascript/src/dependency/esm/harmony_import_dependency.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ pub fn harmony_import_dependency_get_linking_error<T: ModuleDependency>(
230230
} else {
231231
(Severity::Warning, "HarmonyLinkingWarning")
232232
};
233-
let mut diagnostic = if let Some(span) = module_dependency.span()
233+
let mut diagnostic = if let Some(span) = module_dependency.range()
234234
&& let Some(source) = parent_module.original_source().map(|s| s.source())
235235
{
236236
Diagnostic::from(
@@ -380,8 +380,8 @@ impl Dependency for HarmonyImportSideEffectDependency {
380380
Some(self.range.to_string())
381381
}
382382

383-
fn span(&self) -> Option<ErrorSpan> {
384-
Some(ErrorSpan::new(self.range.start, self.range.end))
383+
fn range(&self) -> Option<&RealDependencyLocation> {
384+
Some(&self.range)
385385
}
386386

387387
fn source_order(&self) -> Option<i32> {

0 commit comments

Comments
 (0)