From 7abcea0bd198dc53a1edd699c648e071c80717fa Mon Sep 17 00:00:00 2001 From: Alexander Lyon Date: Fri, 22 Nov 2024 09:56:45 +0000 Subject: [PATCH] port turbopack-swc-utils to ResolvedVc --- .../crates/turbopack-core/src/issue/mod.rs | 29 ++++++++++++------- .../crates/turbopack-ecmascript/src/parse.rs | 4 +-- .../src/references/mod.rs | 2 +- .../src/webpack/references.rs | 4 +-- .../crates/turbopack-swc-utils/src/emitter.rs | 12 ++++---- 5 files changed, 29 insertions(+), 22 deletions(-) diff --git a/turbopack/crates/turbopack-core/src/issue/mod.rs b/turbopack/crates/turbopack-core/src/issue/mod.rs index 836ebf07e5e2b..3dd2bc88f637c 100644 --- a/turbopack/crates/turbopack-core/src/issue/mod.rs +++ b/turbopack/crates/turbopack-core/src/issue/mod.rs @@ -430,7 +430,7 @@ impl CapturedIssues { #[turbo_tasks::value] #[derive(Clone, Debug)] pub struct IssueSource { - source: Vc>, + source: ResolvedVc>, range: Option>, } @@ -447,7 +447,7 @@ impl IssueSource { // Sometimes we only have the source file that causes an issue, not the // exact location, such as as in some generated code. #[turbo_tasks::function] - pub fn from_source_only(source: Vc>) -> Vc { + pub fn from_source_only(source: ResolvedVc>) -> Vc { Self::cell(IssueSource { source, range: None, @@ -456,7 +456,7 @@ impl IssueSource { #[turbo_tasks::function] pub fn from_line_col( - source: Vc>, + source: ResolvedVc>, start: SourcePos, end: SourcePos, ) -> Vc { @@ -511,7 +511,11 @@ impl IssueSource { /// * `start`: The start index of the span. Must use **1-based** indexing. /// * `end`: The end index of the span. Must use **1-based** indexing. #[turbo_tasks::function] - pub fn from_swc_offsets(source: Vc>, start: usize, end: usize) -> Vc { + pub fn from_swc_offsets( + source: ResolvedVc>, + start: usize, + end: usize, + ) -> Vc { Self::cell(IssueSource { source, range: match (start == 0, end == 0) { @@ -536,7 +540,7 @@ impl IssueSource { /// * `start`: Byte offset into the source that the text begins. 0-based index and inclusive. /// * `end`: Byte offset into the source that the text ends. 0-based index and exclusive. pub async fn from_byte_offset( - source: Vc>, + source: ResolvedVc>, start: usize, end: usize, ) -> Result> { @@ -581,12 +585,12 @@ impl IssueSource { } async fn source_pos( - source: Vc>, + source: ResolvedVc>, origin: Vc, start: SourcePos, end: SourcePos, -) -> Result>, SourcePos, SourcePos)>> { - let Some(generator) = Vc::try_resolve_sidecast::>(source).await? +) -> Result>, SourcePos, SourcePos)>> { + let Some(generator) = ResolvedVc::try_sidecast::>(source).await? else { return Ok(None); }; @@ -628,7 +632,10 @@ async fn source_pos( return Ok(None); }; - let (content_1, content_2) = (content_1.resolve().await?, content_2.resolve().await?); + let (content_1, content_2) = ( + content_1.to_resolved().await?, + content_2.to_resolved().await?, + ); if content_1 != content_2 { return Ok(None); @@ -775,7 +782,7 @@ impl IssueSource { #[turbo_tasks::function] pub async fn into_plain(&self) -> Result> { Ok(PlainIssueSource { - asset: PlainSource::from_source(self.source).await?, + asset: PlainSource::from_source(*self.source).await?, range: match self.range { Some(range) => match &*range.await? { SourceRange::LineColumn(start, end) => Some((*start, *end)), @@ -809,7 +816,7 @@ pub struct PlainSource { #[turbo_tasks::value_impl] impl PlainSource { #[turbo_tasks::function] - pub async fn from_source(asset: Vc>) -> Result> { + pub async fn from_source(asset: ResolvedVc>) -> Result> { let asset_content = asset.content().await?; let content = match *asset_content { AssetContent::File(file_content) => file_content.await?, diff --git a/turbopack/crates/turbopack-ecmascript/src/parse.rs b/turbopack/crates/turbopack-ecmascript/src/parse.rs index 4524a3067512b..29f02d485889e 100644 --- a/turbopack/crates/turbopack-ecmascript/src/parse.rs +++ b/turbopack/crates/turbopack-ecmascript/src/parse.rs @@ -262,14 +262,14 @@ async fn parse_file_content( true, false, Box::new(IssueEmitter::new( - *source, + source, source_map.clone(), Some("Ecmascript file had an error".into()), )), ); let emitter = Box::new(IssueEmitter::new( - *source, + source, source_map.clone(), Some("Parsing ecmascript source code failed".into()), )); diff --git a/turbopack/crates/turbopack-ecmascript/src/references/mod.rs b/turbopack/crates/turbopack-ecmascript/src/references/mod.rs index ecf71e01e3f57..33572e74edfba 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/mod.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/mod.rs @@ -586,7 +586,7 @@ pub(crate) async fn analyse_ecmascript_module_internal( let handler = Handler::with_emitter( true, false, - Box::new(IssueEmitter::new(*source, source_map.clone(), None)), + Box::new(IssueEmitter::new(source, source_map.clone(), None)), ); let mut var_graph = diff --git a/turbopack/crates/turbopack-ecmascript/src/webpack/references.rs b/turbopack/crates/turbopack-ecmascript/src/webpack/references.rs index ee7750c034bf3..d40c52b2657c1 100644 --- a/turbopack/crates/turbopack-ecmascript/src/webpack/references.rs +++ b/turbopack/crates/turbopack-ecmascript/src/webpack/references.rs @@ -21,12 +21,12 @@ use crate::{ #[turbo_tasks::function] pub async fn module_references( - source: Vc>, + source: ResolvedVc>, runtime: Vc, transforms: ResolvedVc, ) -> Result> { let parsed = parse( - source, + *source, Value::new(EcmascriptModuleAssetType::Ecmascript), *transforms, ) diff --git a/turbopack/crates/turbopack-swc-utils/src/emitter.rs b/turbopack/crates/turbopack-swc-utils/src/emitter.rs index c89b38a30f18b..c8f91258387c1 100644 --- a/turbopack/crates/turbopack-swc-utils/src/emitter.rs +++ b/turbopack/crates/turbopack-swc-utils/src/emitter.rs @@ -6,7 +6,7 @@ use swc_core::common::{ SourceMap, }; use turbo_rcstr::RcStr; -use turbo_tasks::Vc; +use turbo_tasks::{ResolvedVc, Vc}; use turbopack_core::{ issue::{analyze::AnalyzeIssue, IssueExt, IssueSeverity, IssueSource, StyledString}, source::Source, @@ -14,15 +14,15 @@ use turbopack_core::{ #[derive(Clone)] pub struct IssueEmitter { - pub source: Vc>, + pub source: ResolvedVc>, pub source_map: Arc, pub title: Option, - pub emitted_issues: Vec>, + pub emitted_issues: Vec>, } impl IssueEmitter { pub fn new( - source: Vc>, + source: ResolvedVc>, source_map: Arc, title: Option, ) -> Self { @@ -79,7 +79,7 @@ impl Emitter for IssueEmitter { } let source = db.span.primary_span().map(|span| { - IssueSource::from_swc_offsets(self.source, span.lo.to_usize(), span.hi.to_usize()) + IssueSource::from_swc_offsets(*self.source, span.lo.to_usize(), span.hi.to_usize()) }); // TODO add other primary and secondary spans with labels as sub_issues @@ -91,7 +91,7 @@ impl Emitter for IssueEmitter { code, source, } - .cell(); + .resolved_cell(); self.emitted_issues.push(issue);