mirror of
https://github.com/hanzoai/next.js.git
synced 2026-09-24 17:00:51 +00:00
Turbopack: Remove the IntoTraitRef trait, make it an inherent method on Vc (#91223)
This is basically one-shot from Opus 4.6, with a minor tweak to the doc comment by hand. Discussed this with @lukesandberg, and we realized that there's only one implementation of this trait, so it doesn't make a ton of sense as a trait.
This commit is contained in:
@@ -33,8 +33,8 @@ use serde::{Deserialize, Serialize};
|
||||
use tracing::{Instrument, field::Empty};
|
||||
use turbo_rcstr::{RcStr, rcstr};
|
||||
use turbo_tasks::{
|
||||
Completion, Completions, FxIndexMap, IntoTraitRef, NonLocalValue, OperationValue, OperationVc,
|
||||
ReadRef, ResolvedVc, State, TaskInput, TransientInstance, TryFlatJoinIterExt, Vc,
|
||||
Completion, Completions, FxIndexMap, NonLocalValue, OperationValue, OperationVc, ReadRef,
|
||||
ResolvedVc, State, TaskInput, TransientInstance, TryFlatJoinIterExt, Vc,
|
||||
debug::ValueDebugFormat, fxindexmap, trace::TraceRawVcs,
|
||||
};
|
||||
use turbo_tasks_env::{EnvMap, ProcessEnv};
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ use std::{io::Write, iter::once};
|
||||
use anyhow::{Context, Result, bail};
|
||||
use indoc::writedoc;
|
||||
use turbo_rcstr::{RcStr, rcstr};
|
||||
use turbo_tasks::{IntoTraitRef, ResolvedVc, ValueToString, Vc};
|
||||
use turbo_tasks::{ResolvedVc, ValueToString, Vc};
|
||||
use turbo_tasks_fs::{File, FileContent};
|
||||
use turbopack_core::{
|
||||
asset::AssetContent,
|
||||
|
||||
@@ -6,7 +6,7 @@ use std::{collections::HashSet, mem::take, sync::Mutex};
|
||||
|
||||
use anyhow::Result;
|
||||
use turbo_tasks::{
|
||||
IntoTraitRef, Invalidator, TraitRef, Vc, get_invalidator,
|
||||
Invalidator, TraitRef, Vc, get_invalidator,
|
||||
unmark_top_level_task_may_leak_eventually_consistent_state, with_turbo_tasks,
|
||||
};
|
||||
use turbo_tasks_testing::{Registration, register, run_once};
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
|
||||
use anyhow::Result;
|
||||
use turbo_tasks::{
|
||||
IntoTraitRef, State, TraitRef, Upcast, Vc,
|
||||
unmark_top_level_task_may_leak_eventually_consistent_state,
|
||||
State, TraitRef, Upcast, Vc, unmark_top_level_task_may_leak_eventually_consistent_state,
|
||||
};
|
||||
use turbo_tasks_testing::{Registration, register, run_once};
|
||||
|
||||
|
||||
@@ -108,7 +108,7 @@ pub use crate::{
|
||||
task_input::{EitherTaskInput, TaskInput},
|
||||
},
|
||||
task_execution_reason::TaskExecutionReason,
|
||||
trait_ref::{IntoTraitRef, TraitRef},
|
||||
trait_ref::TraitRef,
|
||||
value::{TransientInstance, TransientValue},
|
||||
value_type::{TraitMethod, TraitType, ValueType},
|
||||
vc::{
|
||||
|
||||
@@ -1,12 +1,7 @@
|
||||
use std::{fmt::Debug, future::Future, marker::PhantomData};
|
||||
|
||||
use anyhow::Result;
|
||||
use std::{fmt::Debug, marker::PhantomData};
|
||||
|
||||
use crate::{
|
||||
Vc, VcValueTrait,
|
||||
registry::get_value_type,
|
||||
task::shared_reference::TypedSharedReference,
|
||||
vc::{ReadVcFuture, VcValueTraitCast, cast::VcCast},
|
||||
Vc, VcValueTrait, registry::get_value_type, task::shared_reference::TypedSharedReference,
|
||||
};
|
||||
|
||||
/// Similar to a [`ReadRef<T>`][crate::ReadRef], but contains a value trait object instead.
|
||||
@@ -117,31 +112,3 @@ where
|
||||
(value_type.raw_cell)(shared_reference).into()
|
||||
}
|
||||
}
|
||||
|
||||
/// A trait that allows a value trait vc to be converted into a trait reference.
|
||||
///
|
||||
/// The signature is similar to `IntoFuture`, but we don't want trait vcs to
|
||||
/// have the same future-like semantics as value vcs when it comes to producing
|
||||
/// refs. This behavior is rarely needed, so in most cases, `.await`ing a trait
|
||||
/// vc is a mistake.
|
||||
pub trait IntoTraitRef {
|
||||
type ValueTrait: VcValueTrait + ?Sized;
|
||||
type Future: Future<Output = Result<<VcValueTraitCast<Self::ValueTrait> as VcCast>::Output>>;
|
||||
|
||||
fn into_trait_ref(self) -> Self::Future;
|
||||
}
|
||||
|
||||
impl<T> IntoTraitRef for Vc<T>
|
||||
where
|
||||
T: VcValueTrait + ?Sized,
|
||||
{
|
||||
type ValueTrait = T;
|
||||
|
||||
type Future = ReadVcFuture<T, VcValueTraitCast<T>>;
|
||||
|
||||
fn into_trait_ref(self) -> Self::Future {
|
||||
self.node
|
||||
.into_read_with_unknown_is_serializable_cell_content()
|
||||
.into()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -514,6 +514,22 @@ where
|
||||
|
||||
impl<T> Unpin for Vc<T> where T: ?Sized {}
|
||||
|
||||
impl<T> Vc<T>
|
||||
where
|
||||
T: VcValueTrait + ?Sized,
|
||||
{
|
||||
/// Converts this trait vc into a trait reference.
|
||||
///
|
||||
/// The signature is similar to [`IntoFuture::into_future`], but we don't want trait vcs to
|
||||
/// have the same future-like semantics as value vcs when it comes to producing refs. This
|
||||
/// behavior is rarely needed, so in most cases, `.await`ing a trait vc is a mistake.
|
||||
pub fn into_trait_ref(self) -> ReadVcFuture<T, VcValueTraitCast<T>> {
|
||||
self.node
|
||||
.into_read_with_unknown_is_serializable_cell_content()
|
||||
.into()
|
||||
}
|
||||
}
|
||||
|
||||
impl<T> Default for Vc<T>
|
||||
where
|
||||
T: ValueDefault,
|
||||
|
||||
@@ -7,9 +7,8 @@ use serde::{Deserialize, Serialize};
|
||||
pub use turbo_tasks_macros::OperationValue;
|
||||
|
||||
use crate::{
|
||||
CollectiblesSource, IntoTraitRef, RawVc, ReadVcFuture, ResolvedVc, TaskInput, UpcastStrict, Vc,
|
||||
VcValueTrait, VcValueTraitCast, VcValueType, marker_trait::impl_auto_marker_trait,
|
||||
trace::TraceRawVcs,
|
||||
CollectiblesSource, RawVc, ReadVcFuture, ResolvedVc, TaskInput, UpcastStrict, Vc, VcValueTrait,
|
||||
VcValueTraitCast, VcValueType, marker_trait::impl_auto_marker_trait, trace::TraceRawVcs,
|
||||
};
|
||||
|
||||
/// A "subtype" (can be converted via [`.connect()`]) of [`Vc`] that
|
||||
|
||||
@@ -114,8 +114,6 @@ pub unsafe trait VcValueType: ShrinkToFit + Sized + Send + Sync + 'static {
|
||||
/// functions defined on the trait to be called.
|
||||
///
|
||||
/// ```ignore
|
||||
/// use turbo_tasks::IntoTraitRef;
|
||||
///
|
||||
/// let trait_vc: Vc<Box<dyn MyTrait>> = ...;
|
||||
/// let trait_ref: TraitRef<Box<dyn MyTrait>> = trait_vc.into_trait_ref().await?;
|
||||
///
|
||||
|
||||
@@ -6,9 +6,7 @@ use either::Either;
|
||||
use indoc::writedoc;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use turbo_rcstr::RcStr;
|
||||
use turbo_tasks::{
|
||||
FxIndexMap, IntoTraitRef, NonLocalValue, ResolvedVc, TryJoinIterExt, Vc, trace::TraceRawVcs,
|
||||
};
|
||||
use turbo_tasks::{FxIndexMap, NonLocalValue, ResolvedVc, TryJoinIterExt, Vc, trace::TraceRawVcs};
|
||||
use turbo_tasks_fs::{File, FileContent};
|
||||
use turbopack_core::{
|
||||
asset::{Asset, AssetContent},
|
||||
|
||||
@@ -2,7 +2,7 @@ use std::sync::Arc;
|
||||
|
||||
use anyhow::Result;
|
||||
use serde::Serialize;
|
||||
use turbo_tasks::{FxIndexMap, IntoTraitRef, ResolvedVc, TraitRef, Vc};
|
||||
use turbo_tasks::{FxIndexMap, ResolvedVc, TraitRef, Vc};
|
||||
use turbopack_core::version::{
|
||||
MergeableVersionedContent, PartialUpdate, TotalUpdate, Update, Version, VersionedContent,
|
||||
VersionedContentMerger,
|
||||
|
||||
@@ -2,7 +2,7 @@ use std::sync::Arc;
|
||||
|
||||
use anyhow::Result;
|
||||
use serde::Serialize;
|
||||
use turbo_tasks::{FxIndexMap, FxIndexSet, IntoTraitRef, ReadRef, ResolvedVc, TryJoinIterExt, Vc};
|
||||
use turbo_tasks::{FxIndexMap, FxIndexSet, ReadRef, ResolvedVc, TryJoinIterExt, Vc};
|
||||
use turbo_tasks_fs::rope::Rope;
|
||||
use turbopack_core::{
|
||||
chunk::{ChunkingContext, ModuleId},
|
||||
|
||||
@@ -15,9 +15,9 @@ use serde::{Deserialize, Serialize};
|
||||
use turbo_esregex::EsRegex;
|
||||
use turbo_rcstr::RcStr;
|
||||
use turbo_tasks::{
|
||||
CollectiblesSource, IntoTraitRef, NonLocalValue, OperationVc, RawVc, ReadRef, ResolvedVc,
|
||||
TaskInput, TransientValue, TryFlatJoinIterExt, TryJoinIterExt, Upcast, ValueDefault,
|
||||
ValueToString, Vc, emit, trace::TraceRawVcs,
|
||||
CollectiblesSource, NonLocalValue, OperationVc, RawVc, ReadRef, ResolvedVc, TaskInput,
|
||||
TransientValue, TryFlatJoinIterExt, TryJoinIterExt, Upcast, ValueDefault, ValueToString, Vc,
|
||||
emit, trace::TraceRawVcs,
|
||||
};
|
||||
use turbo_tasks_fs::{
|
||||
FileContent, FileLine, FileLinesContent, FileSystem, FileSystemPath, glob::Glob,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use anyhow::Result;
|
||||
use turbo_rcstr::RcStr;
|
||||
use turbo_tasks::{IntoTraitRef, PrettyPrintError, ResolvedVc, Vc};
|
||||
use turbo_tasks::{PrettyPrintError, ResolvedVc, Vc};
|
||||
use turbo_tasks_fs::FileSystemPath;
|
||||
|
||||
use crate::{
|
||||
|
||||
@@ -3,7 +3,7 @@ use std::sync::Arc;
|
||||
use anyhow::{Context, Result, bail};
|
||||
use turbo_rcstr::RcStr;
|
||||
use turbo_tasks::{
|
||||
IntoTraitRef, NonLocalValue, OperationValue, ReadRef, ResolvedVc, State, TraitRef, Vc,
|
||||
NonLocalValue, OperationValue, ReadRef, ResolvedVc, State, TraitRef, Vc,
|
||||
debug::ValueDebugFormat, trace::TraceRawVcs,
|
||||
};
|
||||
use turbo_tasks_hash::HashAlgorithm;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use anyhow::Result;
|
||||
use turbo_rcstr::rcstr;
|
||||
use turbo_tasks::{IntoTraitRef, ResolvedVc, TryJoinIterExt, Vc, turbofmt};
|
||||
use turbo_tasks::{ResolvedVc, TryJoinIterExt, Vc, turbofmt};
|
||||
use turbo_tasks_fs::{FileContent, FileSystemPath};
|
||||
use turbopack_core::{
|
||||
chunk::{ChunkItem, ChunkType, ChunkableModule, ChunkingContext, MinifyType},
|
||||
|
||||
@@ -4,7 +4,7 @@ use anyhow::{Context, Result};
|
||||
use lightningcss::css_modules::CssModuleReference;
|
||||
use swc_core::common::{BytePos, FileName, LineCol, SourceMap};
|
||||
use turbo_rcstr::{RcStr, rcstr};
|
||||
use turbo_tasks::{FxIndexMap, IntoTraitRef, ResolvedVc, Vc, turbofmt};
|
||||
use turbo_tasks::{FxIndexMap, ResolvedVc, Vc, turbofmt};
|
||||
use turbo_tasks_fs::{FileSystemPath, rope::Rope};
|
||||
use turbopack_core::{
|
||||
chunk::{AsyncModuleInfo, ChunkableModule, ChunkingContext, ModuleChunkItemIdExt},
|
||||
|
||||
@@ -7,8 +7,7 @@ use tokio_stream::wrappers::ReceiverStream;
|
||||
use tracing::Instrument;
|
||||
use turbo_rcstr::{RcStr, rcstr};
|
||||
use turbo_tasks::{
|
||||
IntoTraitRef, NonLocalValue, OperationVc, PrettyPrintError, ReadRef, ResolvedVc,
|
||||
TransientInstance, Vc,
|
||||
NonLocalValue, OperationVc, PrettyPrintError, ReadRef, ResolvedVc, TransientInstance, Vc,
|
||||
trace::{TraceRawVcs, TraceRawVcsContext},
|
||||
};
|
||||
use turbo_tasks_fs::{FileSystem, FileSystemPath};
|
||||
|
||||
@@ -78,8 +78,8 @@ use swc_core::{
|
||||
use tracing::{Instrument, Level, instrument};
|
||||
use turbo_rcstr::{RcStr, rcstr};
|
||||
use turbo_tasks::{
|
||||
FxDashMap, FxIndexMap, IntoTraitRef, NonLocalValue, ReadRef, ResolvedVc, TaskInput,
|
||||
TryJoinIterExt, Upcast, ValueToString, Vc, trace::TraceRawVcs, turbofmt,
|
||||
FxDashMap, FxIndexMap, NonLocalValue, ReadRef, ResolvedVc, TaskInput, TryJoinIterExt, Upcast,
|
||||
ValueToString, Vc, trace::TraceRawVcs, turbofmt,
|
||||
};
|
||||
use turbo_tasks_fs::{FileJsonContent, FileSystemPath, glob::Glob, rope::Rope};
|
||||
use turbopack_core::{
|
||||
|
||||
@@ -10,8 +10,8 @@ use serde::{Deserialize, Serialize, de::DeserializeOwned};
|
||||
use serde_json::Value as JsonValue;
|
||||
use turbo_rcstr::{RcStr, rcstr};
|
||||
use turbo_tasks::{
|
||||
Completion, Effects, FxIndexMap, IntoTraitRef, NonLocalValue, OperationVc, PrettyPrintError,
|
||||
ReadRef, ResolvedVc, TaskInput, TryJoinIterExt, Vc, duration_span, fxindexmap, get_effects,
|
||||
Completion, Effects, FxIndexMap, NonLocalValue, OperationVc, PrettyPrintError, ReadRef,
|
||||
ResolvedVc, TaskInput, TryJoinIterExt, Vc, duration_span, fxindexmap, get_effects,
|
||||
trace::TraceRawVcs,
|
||||
};
|
||||
use turbo_tasks_env::{EnvMap, ProcessEnv};
|
||||
|
||||
@@ -2,7 +2,7 @@ use std::sync::Arc;
|
||||
|
||||
use anyhow::Result;
|
||||
use serde::Serialize;
|
||||
use turbo_tasks::{FxIndexMap, FxIndexSet, IntoTraitRef, ReadRef, ResolvedVc, Vc};
|
||||
use turbo_tasks::{FxIndexMap, FxIndexSet, ReadRef, ResolvedVc, Vc};
|
||||
use turbo_tasks_fs::rope::Rope;
|
||||
use turbopack_core::{
|
||||
chunk::ModuleId,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use anyhow::{Result, bail};
|
||||
use turbo_rcstr::rcstr;
|
||||
use turbo_tasks::{IntoTraitRef, ResolvedVc, Vc, fxindexmap};
|
||||
use turbo_tasks::{ResolvedVc, Vc, fxindexmap};
|
||||
use turbo_tasks_fs::FileSystemPath;
|
||||
use turbopack_core::{
|
||||
chunk::{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use anyhow::{Result, bail};
|
||||
use turbo_rcstr::rcstr;
|
||||
use turbo_tasks::{IntoTraitRef, ResolvedVc, Vc};
|
||||
use turbo_tasks::{ResolvedVc, Vc};
|
||||
use turbopack_core::{
|
||||
chunk::{AsyncModuleInfo, ChunkableModule, ChunkingContext},
|
||||
context::AssetContext,
|
||||
|
||||
@@ -11,7 +11,7 @@ pub use module_options_context::*;
|
||||
pub use module_rule::*;
|
||||
pub use rule_condition::*;
|
||||
use turbo_rcstr::{RcStr, rcstr};
|
||||
use turbo_tasks::{IntoTraitRef, ResolvedVc, TryJoinIterExt, Vc};
|
||||
use turbo_tasks::{ResolvedVc, TryJoinIterExt, Vc};
|
||||
use turbo_tasks_fs::{
|
||||
FileSystemPath,
|
||||
glob::{Glob, GlobOptions},
|
||||
|
||||
Reference in New Issue
Block a user