Skip to content

Commit 243fda5

Browse files
committed
FreeVarReference::ReportUsage
1 parent daad8c5 commit 243fda5

File tree

4 files changed

+46
-31
lines changed

4 files changed

+46
-31
lines changed

turbopack/crates/turbopack-core/src/compile_time_info.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use turbo_rcstr::RcStr;
77
use turbo_tasks::{FxIndexMap, NonLocalValue, ResolvedVc, Vc, trace::TraceRawVcs};
88
use turbo_tasks_fs::FileSystemPath;
99

10-
use crate::environment::Environment;
10+
use crate::{environment::Environment, issue::IssueSeverity};
1111

1212
#[macro_export]
1313
macro_rules! definable_name_map_pattern_internal {
@@ -313,12 +313,12 @@ pub enum FreeVarReference {
313313
Member(RcStr, RcStr),
314314
Value(CompileTimeDefineValue),
315315
InputRelative(InputRelativeConstant),
316-
Error(RcStr),
317-
/// Emits a warning when the free variable is inlined, then processes the inner reference.
318-
/// Unlike `Error`, this will still perform the replacement after emitting the warning.
319-
Warning {
316+
// Report the replacement of this free var with the given severity and message, and
317+
// potentially replace with the `inner` value.
318+
ReportUsage {
320319
message: RcStr,
321-
inner: Box<FreeVarReference>,
320+
severity: IssueSeverity,
321+
inner: Option<Box<FreeVarReference>>,
322322
},
323323
}
324324

turbopack/crates/turbopack-ecmascript/src/analyzer/mod.rs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -641,10 +641,16 @@ impl TryFrom<&FreeVarReference> for JsValue {
641641
false,
642642
"compile time injected free var module",
643643
)),
644-
FreeVarReference::Error(_) => Ok(JsValue::unknown_empty(
645-
false,
646-
"compile time injected free var error",
647-
)),
644+
FreeVarReference::ReportUsage { inner, .. } => {
645+
if let Some(inner) = &inner {
646+
inner.as_ref().try_into()
647+
} else {
648+
Ok(JsValue::unknown_empty(
649+
false,
650+
"compile time injected free var error",
651+
))
652+
}
653+
}
648654
FreeVarReference::InputRelative(kind) => {
649655
use turbopack_core::compile_time_info::InputRelativeConstant;
650656
Ok(JsValue::unknown_empty(
@@ -659,7 +665,6 @@ impl TryFrom<&FreeVarReference> for JsValue {
659665
},
660666
))
661667
}
662-
FreeVarReference::Warning { inner, .. } => inner.as_ref().try_into(),
663668
}
664669
}
665670
}

turbopack/crates/turbopack-ecmascript/src/references/mod.rs

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ use swc_core::{
4343
common::{
4444
GLOBALS, Globals, Span, Spanned, SyntaxContext,
4545
comments::{CommentKind, Comments},
46-
errors::{DiagnosticId, HANDLER, Handler},
46+
errors::{DiagnosticId, HANDLER, Handler, Level},
4747
pass::AstNodePath,
4848
source_map::SmallPos,
4949
},
@@ -2909,13 +2909,6 @@ async fn handle_free_var_reference(
29092909
}
29102910

29112911
match value {
2912-
FreeVarReference::Error(error_message) => state.handler.span_err_with_code(
2913-
span,
2914-
error_message,
2915-
DiagnosticId::Error(
2916-
errors::failed_to_analyze::ecmascript::FREE_VAR_REFERENCE.to_string(),
2917-
),
2918-
),
29192912
FreeVarReference::Value(value) => {
29202913
analysis.add_code_gen(ConstantValueCodeGen::new(
29212914
value.clone(),
@@ -2998,18 +2991,34 @@ async fn handle_free_var_reference(
29982991
ast_path.to_vec().into(),
29992992
));
30002993
}
3001-
FreeVarReference::Warning { message, inner } => {
3002-
state.handler.span_warn_with_code(
3003-
span,
2994+
FreeVarReference::ReportUsage {
2995+
message,
2996+
severity,
2997+
inner,
2998+
} => {
2999+
state.handler.emit_with_code(
3000+
&span.into(),
30043001
message,
30053002
DiagnosticId::Error(
30063003
errors::failed_to_analyze::ecmascript::FREE_VAR_REFERENCE.to_string(),
30073004
),
3005+
match severity {
3006+
IssueSeverity::Bug => Level::Bug,
3007+
IssueSeverity::Fatal => Level::Fatal,
3008+
IssueSeverity::Error => Level::Error,
3009+
IssueSeverity::Warning => Level::Warning,
3010+
IssueSeverity::Hint => Level::Help,
3011+
IssueSeverity::Info | IssueSeverity::Note => Level::Note,
3012+
IssueSeverity::Suggestion => Level::Cancelled,
3013+
},
30083014
);
3009-
return Box::pin(handle_free_var_reference(
3010-
ast_path, inner, span, state, analysis,
3011-
))
3012-
.await;
3015+
3016+
if let Some(inner) = inner {
3017+
return Box::pin(handle_free_var_reference(
3018+
ast_path, inner, span, state, analysis,
3019+
))
3020+
.await;
3021+
}
30133022
}
30143023
}
30153024
Ok(true)

turbopack/crates/turbopack-tests/tests/snapshot.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ use turbopack_core::{
4242
file_source::FileSource,
4343
free_var_references,
4444
ident::Layer,
45-
issue::{CollectibleIssuesExt, IssueFilter},
45+
issue::{CollectibleIssuesExt, IssueFilter, IssueSeverity},
4646
module::Module,
4747
module_graph::{
4848
ModuleGraph, SingleModuleGraph,
@@ -326,11 +326,12 @@ async fn run_test_operation(resource: RcStr) -> Result<Vc<FileSystemPath>> {
326326
.free_var_references(
327327
free_var_references!(
328328
..defines.into_iter(),
329-
WARNED_VALUE = FreeVarReference::Warning {
329+
WARNED_VALUE = FreeVarReference::ReportUsage {
330+
severity: IssueSeverity::Warning,
330331
message: rcstr!("WARNED_VALUE is deprecated, use REPLACEMENT_VALUE instead"),
331-
inner: Box::new(FreeVarReference::Value(CompileTimeDefineValue::String(
332-
rcstr!("replacement")
333-
),)),
332+
inner: Some(Box::new(FreeVarReference::Value(
333+
CompileTimeDefineValue::String(rcstr!("replacement"))
334+
))),
334335
},
335336
)
336337
.resolved_cell(),

0 commit comments

Comments
 (0)