mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-29 05:15:04 +00:00
Make the result of Const, FunctionRender and TypeAliasRender constructors optional
They use source() which now returns an Option so they need to too.
This commit is contained in:
parent
3f1b3df65b
commit
7bfec89cf9
5 changed files with 17 additions and 20 deletions
|
@ -106,8 +106,9 @@ impl Completions {
|
||||||
func: hir::Function,
|
func: hir::Function,
|
||||||
local_name: Option<String>,
|
local_name: Option<String>,
|
||||||
) {
|
) {
|
||||||
let item = render_fn(RenderContext::new(ctx), None, local_name, func);
|
if let Some(item) = render_fn(RenderContext::new(ctx), None, local_name, func) {
|
||||||
self.add(item)
|
self.add(item)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn add_variant_pat(
|
pub(crate) fn add_variant_pat(
|
||||||
|
|
|
@ -157,8 +157,7 @@ impl<'a> Render<'a> {
|
||||||
|
|
||||||
let kind = match resolution {
|
let kind = match resolution {
|
||||||
ScopeDef::ModuleDef(Function(func)) => {
|
ScopeDef::ModuleDef(Function(func)) => {
|
||||||
let item = render_fn(self.ctx, import_to_add, Some(local_name), *func);
|
return render_fn(self.ctx, import_to_add, Some(local_name), *func);
|
||||||
return Some(item);
|
|
||||||
}
|
}
|
||||||
ScopeDef::ModuleDef(Variant(_))
|
ScopeDef::ModuleDef(Variant(_))
|
||||||
if self.ctx.completion.is_pat_binding_or_const
|
if self.ctx.completion.is_pat_binding_or_const
|
||||||
|
|
|
@ -15,7 +15,7 @@ pub(crate) fn render_const<'a>(
|
||||||
ctx: RenderContext<'a>,
|
ctx: RenderContext<'a>,
|
||||||
const_: hir::Const,
|
const_: hir::Const,
|
||||||
) -> Option<CompletionItem> {
|
) -> Option<CompletionItem> {
|
||||||
ConstRender::new(ctx, const_).render()
|
ConstRender::new(ctx, const_)?.render()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
@ -26,10 +26,9 @@ struct ConstRender<'a> {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> ConstRender<'a> {
|
impl<'a> ConstRender<'a> {
|
||||||
fn new(ctx: RenderContext<'a>, const_: hir::Const) -> ConstRender<'a> {
|
fn new(ctx: RenderContext<'a>, const_: hir::Const) -> Option<ConstRender<'a>> {
|
||||||
#[allow(deprecated)]
|
let ast_node = const_.source(ctx.db())?.value;
|
||||||
let ast_node = const_.source_old(ctx.db()).value;
|
Some(ConstRender { ctx, const_, ast_node })
|
||||||
ConstRender { ctx, const_, ast_node }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn render(self) -> Option<CompletionItem> {
|
fn render(self) -> Option<CompletionItem> {
|
||||||
|
|
|
@ -14,9 +14,9 @@ pub(crate) fn render_fn<'a>(
|
||||||
import_to_add: Option<ImportEdit>,
|
import_to_add: Option<ImportEdit>,
|
||||||
local_name: Option<String>,
|
local_name: Option<String>,
|
||||||
fn_: hir::Function,
|
fn_: hir::Function,
|
||||||
) -> CompletionItem {
|
) -> Option<CompletionItem> {
|
||||||
let _p = profile::span("render_fn");
|
let _p = profile::span("render_fn");
|
||||||
FunctionRender::new(ctx, local_name, fn_).render(import_to_add)
|
Some(FunctionRender::new(ctx, local_name, fn_)?.render(import_to_add))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
@ -32,12 +32,11 @@ impl<'a> FunctionRender<'a> {
|
||||||
ctx: RenderContext<'a>,
|
ctx: RenderContext<'a>,
|
||||||
local_name: Option<String>,
|
local_name: Option<String>,
|
||||||
fn_: hir::Function,
|
fn_: hir::Function,
|
||||||
) -> FunctionRender<'a> {
|
) -> Option<FunctionRender<'a>> {
|
||||||
let name = local_name.unwrap_or_else(|| fn_.name(ctx.db()).to_string());
|
let name = local_name.unwrap_or_else(|| fn_.name(ctx.db()).to_string());
|
||||||
#[allow(deprecated)]
|
let ast_node = fn_.source(ctx.db())?.value;
|
||||||
let ast_node = fn_.source_old(ctx.db()).value;
|
|
||||||
|
|
||||||
FunctionRender { ctx, name, func: fn_, ast_node }
|
Some(FunctionRender { ctx, name, func: fn_, ast_node })
|
||||||
}
|
}
|
||||||
|
|
||||||
fn render(self, import_to_add: Option<ImportEdit>) -> CompletionItem {
|
fn render(self, import_to_add: Option<ImportEdit>) -> CompletionItem {
|
||||||
|
|
|
@ -15,7 +15,7 @@ pub(crate) fn render_type_alias<'a>(
|
||||||
ctx: RenderContext<'a>,
|
ctx: RenderContext<'a>,
|
||||||
type_alias: hir::TypeAlias,
|
type_alias: hir::TypeAlias,
|
||||||
) -> Option<CompletionItem> {
|
) -> Option<CompletionItem> {
|
||||||
TypeAliasRender::new(ctx, type_alias).render()
|
TypeAliasRender::new(ctx, type_alias)?.render()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
@ -26,10 +26,9 @@ struct TypeAliasRender<'a> {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> TypeAliasRender<'a> {
|
impl<'a> TypeAliasRender<'a> {
|
||||||
fn new(ctx: RenderContext<'a>, type_alias: hir::TypeAlias) -> TypeAliasRender<'a> {
|
fn new(ctx: RenderContext<'a>, type_alias: hir::TypeAlias) -> Option<TypeAliasRender<'a>> {
|
||||||
#[allow(deprecated)]
|
let ast_node = type_alias.source(ctx.db())?.value;
|
||||||
let ast_node = type_alias.source_old(ctx.db()).value;
|
Some(TypeAliasRender { ctx, type_alias, ast_node })
|
||||||
TypeAliasRender { ctx, type_alias, ast_node }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn render(self) -> Option<CompletionItem> {
|
fn render(self) -> Option<CompletionItem> {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue