Skip to main content

turbopack_core/issue/
code_gen.rs

1use anyhow::Result;
2use async_trait::async_trait;
3use turbo_tasks::ResolvedVc;
4use turbo_tasks_fs::FileSystemPath;
5
6use super::{Issue, IssueSeverity, IssueSource, IssueStage, StyledString};
7
8#[turbo_tasks::value(shared)]
9pub struct CodeGenerationIssue {
10    pub severity: IssueSeverity,
11    pub path: FileSystemPath,
12    pub title: ResolvedVc<StyledString>,
13    pub message: ResolvedVc<StyledString>,
14    /// Optional source location that points to where the issue originates
15    pub source: Option<IssueSource>,
16}
17
18#[async_trait]
19#[turbo_tasks::value_impl]
20impl Issue for CodeGenerationIssue {
21    fn severity(&self) -> IssueSeverity {
22        self.severity
23    }
24
25    async fn file_path(&self) -> Result<FileSystemPath> {
26        Ok(self.path.clone())
27    }
28
29    fn stage(&self) -> IssueStage {
30        IssueStage::CodeGen
31    }
32
33    async fn title(&self) -> Result<StyledString> {
34        Ok((*self.title.await?).clone())
35    }
36
37    async fn description(&self) -> Result<Option<StyledString>> {
38        Ok(Some((*self.message.await?).clone()))
39    }
40
41    fn source(&self) -> Option<IssueSource> {
42        self.source
43    }
44}