mirror of
https://github.com/erg-lang/erg.git
synced 2025-09-27 11:59:05 +00:00
feat(els): display type bounds as inlay hints
This commit is contained in:
parent
855d47f02c
commit
7103c9f3bb
6 changed files with 123 additions and 57 deletions
|
@ -25,7 +25,7 @@ use erg_common::{
|
|||
use erg_parser::ast::{DefId, DefKind};
|
||||
use CommonOpcode::*;
|
||||
|
||||
use erg_parser::ast::{ParamPattern, VarName};
|
||||
use erg_parser::ast::{ParamPattern, TypeBoundSpecs, VarName};
|
||||
use erg_parser::token::DOT;
|
||||
use erg_parser::token::EQUAL;
|
||||
use erg_parser::token::{Token, TokenKind};
|
||||
|
@ -2798,7 +2798,8 @@ impl PyCodeGenerator {
|
|||
Params::new(vec![self_param], None, vec![], None),
|
||||
)
|
||||
};
|
||||
let subr_sig = SubrSignature::new(ident, params, sig.t_spec().cloned());
|
||||
let bounds = TypeBoundSpecs::empty();
|
||||
let subr_sig = SubrSignature::new(ident, bounds, params, sig.t_spec().cloned());
|
||||
let mut attrs = vec![];
|
||||
match new_first_param.map(|pt| pt.typ()) {
|
||||
// namedtupleは仕様上::xなどの名前を使えない
|
||||
|
@ -2874,7 +2875,8 @@ impl PyCodeGenerator {
|
|||
erg_parser::ast::NonDefaultParamSignature::new(ParamPattern::VarName(param), None);
|
||||
let param = NonDefaultParamSignature::new(raw, vi, None);
|
||||
let params = Params::new(vec![param], None, vec![], None);
|
||||
let sig = SubrSignature::new(ident, params, sig.t_spec().cloned());
|
||||
let bounds = TypeBoundSpecs::empty();
|
||||
let sig = SubrSignature::new(ident, bounds, params, sig.t_spec().cloned());
|
||||
let arg = PosArg::new(Expr::Accessor(Accessor::private_with_line(
|
||||
Str::from(param_name),
|
||||
line,
|
||||
|
@ -2885,7 +2887,8 @@ impl PyCodeGenerator {
|
|||
self.emit_subr_def(Some(class_ident.inspect()), sig, body);
|
||||
} else {
|
||||
let params = Params::new(vec![], None, vec![], None);
|
||||
let sig = SubrSignature::new(ident, params, sig.t_spec().cloned());
|
||||
let bounds = TypeBoundSpecs::empty();
|
||||
let sig = SubrSignature::new(ident, bounds, params, sig.t_spec().cloned());
|
||||
let call = class_new.call_expr(Args::new(vec![], None, vec![], None));
|
||||
let block = Block::new(vec![call]);
|
||||
let body = DefBody::new(EQUAL, block, DefId(0));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue