mirror of
https://github.com/swc-project/swc.git
synced 2025-01-04 11:37:06 +03:00
fix(es/parser): Fix bugs (#1405)
swc_ecma_parser: - Parse generics in class methods with special name properly.
This commit is contained in:
parent
a53186c842
commit
5ad57b02f2
@ -7,7 +7,7 @@ include = ["Cargo.toml", "src/**/*.rs", "examples/**/*.rs"]
|
|||||||
license = "Apache-2.0/MIT"
|
license = "Apache-2.0/MIT"
|
||||||
name = "swc_ecma_parser"
|
name = "swc_ecma_parser"
|
||||||
repository = "https://github.com/swc-project/swc.git"
|
repository = "https://github.com/swc-project/swc.git"
|
||||||
version = "0.47.1"
|
version = "0.47.2"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = []
|
default = []
|
||||||
|
@ -297,6 +297,8 @@ impl<'a, I: Tokens> Parser<I> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn parse_class_member(&mut self) -> PResult<ClassMember> {
|
fn parse_class_member(&mut self) -> PResult<ClassMember> {
|
||||||
|
trace_cur!(self, parse_class_member);
|
||||||
|
|
||||||
let start = cur_pos!(self);
|
let start = cur_pos!(self);
|
||||||
let decorators = self.parse_decorators(false)?;
|
let decorators = self.parse_decorators(false)?;
|
||||||
let declare = self.syntax().typescript() && eat!(self, "declare");
|
let declare = self.syntax().typescript() && eat!(self, "declare");
|
||||||
@ -476,6 +478,7 @@ impl<'a, I: Tokens> Parser<I> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
trace_cur!(self, parse_class_member_with_is_static__normal_class_member);
|
||||||
let mut key = self.parse_class_prop_name()?;
|
let mut key = self.parse_class_prop_name()?;
|
||||||
let is_optional = self.input.syntax().typescript() && eat!(self, '?');
|
let is_optional = self.input.syntax().typescript() && eat!(self, '?');
|
||||||
|
|
||||||
@ -496,6 +499,8 @@ impl<'a, I: Tokens> Parser<I> {
|
|||||||
if self.is_class_method()? {
|
if self.is_class_method()? {
|
||||||
// handle a(){} / get(){} / set(){} / async(){}
|
// handle a(){} / get(){} / set(){} / async(){}
|
||||||
|
|
||||||
|
trace_cur!(self, parse_class_member_with_is_static__normal_class_method);
|
||||||
|
|
||||||
if readonly {
|
if readonly {
|
||||||
syntax_error!(self, span!(self, start), SyntaxError::ReadOnlyMethod);
|
syntax_error!(self, span!(self, start), SyntaxError::ReadOnlyMethod);
|
||||||
}
|
}
|
||||||
@ -819,7 +824,9 @@ impl<'a, I: Tokens> Parser<I> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn is_class_method(&mut self) -> PResult<bool> {
|
fn is_class_method(&mut self) -> PResult<bool> {
|
||||||
Ok(is!(self, '(') || (self.input.syntax().typescript() && is!(self, '<')))
|
Ok(is!(self, '(')
|
||||||
|
|| (self.input.syntax().typescript() && is!(self, '<'))
|
||||||
|
|| (self.input.syntax().typescript() && is!(self, JSXTagStart)))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_class_property(&mut self) -> PResult<bool> {
|
fn is_class_property(&mut self) -> PResult<bool> {
|
||||||
@ -912,6 +919,8 @@ impl<'a, I: Tokens> Parser<I> {
|
|||||||
where
|
where
|
||||||
F: FnOnce(&mut Self) -> PResult<Vec<Param>>,
|
F: FnOnce(&mut Self) -> PResult<Vec<Param>>,
|
||||||
{
|
{
|
||||||
|
trace_cur!(self, parse_fn_args_body);
|
||||||
|
|
||||||
// let prev_in_generator = self.ctx().in_generator;
|
// let prev_in_generator = self.ctx().in_generator;
|
||||||
let ctx = Context {
|
let ctx = Context {
|
||||||
in_async: is_async,
|
in_async: is_async,
|
||||||
@ -922,6 +931,7 @@ impl<'a, I: Tokens> Parser<I> {
|
|||||||
self.with_ctx(ctx).parse_with(|p| {
|
self.with_ctx(ctx).parse_with(|p| {
|
||||||
let type_params = if p.syntax().typescript() && is_one_of!(p, '<', JSXTagStart) {
|
let type_params = if p.syntax().typescript() && is_one_of!(p, '<', JSXTagStart) {
|
||||||
//
|
//
|
||||||
|
trace_cur!(p, parse_fn_args_body__type_params);
|
||||||
Some(p.parse_ts_type_params()?)
|
Some(p.parse_ts_type_params()?)
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
@ -1033,6 +1043,8 @@ impl<'a, I: Tokens> Parser<I> {
|
|||||||
where
|
where
|
||||||
F: FnOnce(&mut Self) -> PResult<Vec<Param>>,
|
F: FnOnce(&mut Self) -> PResult<Vec<Param>>,
|
||||||
{
|
{
|
||||||
|
trace_cur!(self, make_method);
|
||||||
|
|
||||||
let is_static = static_token.is_some();
|
let is_static = static_token.is_some();
|
||||||
let ctx = Context {
|
let ctx = Context {
|
||||||
span_of_fn_name: Some(key.span()),
|
span_of_fn_name: Some(key.span()),
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
function foo<P extends RouteParams = RP, S extends State = RS>(
|
||||||
|
name: string,
|
||||||
|
path: string,
|
||||||
|
...middleware: RouterMiddleware<P, S>[]
|
||||||
|
): Router<P extends RP ? P : (P & RP), S extends RS ? S : (S & RS)>; { }
|
@ -0,0 +1,653 @@
|
|||||||
|
{
|
||||||
|
"type": "Script",
|
||||||
|
"span": {
|
||||||
|
"start": 0,
|
||||||
|
"end": 216,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"type": "FunctionDeclaration",
|
||||||
|
"identifier": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 9,
|
||||||
|
"end": 12,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "foo",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"declare": false,
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"type": "Parameter",
|
||||||
|
"span": {
|
||||||
|
"start": 68,
|
||||||
|
"end": 80,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"decorators": [],
|
||||||
|
"pat": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 68,
|
||||||
|
"end": 80,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "name",
|
||||||
|
"typeAnnotation": {
|
||||||
|
"type": "TsTypeAnnotation",
|
||||||
|
"span": {
|
||||||
|
"start": 72,
|
||||||
|
"end": 80,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeAnnotation": {
|
||||||
|
"type": "TsKeywordType",
|
||||||
|
"span": {
|
||||||
|
"start": 74,
|
||||||
|
"end": 80,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"kind": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"optional": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Parameter",
|
||||||
|
"span": {
|
||||||
|
"start": 86,
|
||||||
|
"end": 98,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"decorators": [],
|
||||||
|
"pat": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 86,
|
||||||
|
"end": 98,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "path",
|
||||||
|
"typeAnnotation": {
|
||||||
|
"type": "TsTypeAnnotation",
|
||||||
|
"span": {
|
||||||
|
"start": 90,
|
||||||
|
"end": 98,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeAnnotation": {
|
||||||
|
"type": "TsKeywordType",
|
||||||
|
"span": {
|
||||||
|
"start": 92,
|
||||||
|
"end": 98,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"kind": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"optional": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Parameter",
|
||||||
|
"span": {
|
||||||
|
"start": 104,
|
||||||
|
"end": 143,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"decorators": [],
|
||||||
|
"pat": {
|
||||||
|
"type": "RestElement",
|
||||||
|
"span": {
|
||||||
|
"start": 104,
|
||||||
|
"end": 143,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"rest": {
|
||||||
|
"start": 104,
|
||||||
|
"end": 107,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"argument": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 107,
|
||||||
|
"end": 117,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "middleware",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeAnnotation": {
|
||||||
|
"type": "TsTypeAnnotation",
|
||||||
|
"span": {
|
||||||
|
"start": 117,
|
||||||
|
"end": 143,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeAnnotation": {
|
||||||
|
"type": "TsArrayType",
|
||||||
|
"span": {
|
||||||
|
"start": 119,
|
||||||
|
"end": 143,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"elemType": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 119,
|
||||||
|
"end": 141,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 119,
|
||||||
|
"end": 135,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "RouterMiddleware",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": {
|
||||||
|
"type": "TsTypeParameterInstantiation",
|
||||||
|
"span": {
|
||||||
|
"start": 135,
|
||||||
|
"end": 141,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 136,
|
||||||
|
"end": 137,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 136,
|
||||||
|
"end": 137,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "P",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 139,
|
||||||
|
"end": 140,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 139,
|
||||||
|
"end": 140,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "S",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"decorators": [],
|
||||||
|
"span": {
|
||||||
|
"start": 0,
|
||||||
|
"end": 212,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"body": null,
|
||||||
|
"generator": false,
|
||||||
|
"async": false,
|
||||||
|
"typeParameters": {
|
||||||
|
"type": "TsTypeParameterDeclaration",
|
||||||
|
"span": {
|
||||||
|
"start": 12,
|
||||||
|
"end": 62,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "TsTypeParameter",
|
||||||
|
"span": {
|
||||||
|
"start": 13,
|
||||||
|
"end": 39,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 13,
|
||||||
|
"end": 14,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "P",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"constraint": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 23,
|
||||||
|
"end": 34,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 23,
|
||||||
|
"end": 34,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "RouteParams",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
},
|
||||||
|
"default": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 37,
|
||||||
|
"end": 39,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 37,
|
||||||
|
"end": 39,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "RP",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TsTypeParameter",
|
||||||
|
"span": {
|
||||||
|
"start": 41,
|
||||||
|
"end": 61,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 41,
|
||||||
|
"end": 42,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "S",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"constraint": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 51,
|
||||||
|
"end": 56,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 51,
|
||||||
|
"end": 56,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "State",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
},
|
||||||
|
"default": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 59,
|
||||||
|
"end": 61,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 59,
|
||||||
|
"end": 61,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "RS",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"returnType": {
|
||||||
|
"type": "TsTypeAnnotation",
|
||||||
|
"span": {
|
||||||
|
"start": 145,
|
||||||
|
"end": 211,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeAnnotation": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 147,
|
||||||
|
"end": 211,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 147,
|
||||||
|
"end": 153,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "Router",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": {
|
||||||
|
"type": "TsTypeParameterInstantiation",
|
||||||
|
"span": {
|
||||||
|
"start": 153,
|
||||||
|
"end": 211,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"type": "TsConditionalType",
|
||||||
|
"span": {
|
||||||
|
"start": 154,
|
||||||
|
"end": 181,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"checkType": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 154,
|
||||||
|
"end": 155,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 154,
|
||||||
|
"end": 155,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "P",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
},
|
||||||
|
"extendsType": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 164,
|
||||||
|
"end": 166,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 164,
|
||||||
|
"end": 166,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "RP",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
},
|
||||||
|
"trueType": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 169,
|
||||||
|
"end": 170,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 169,
|
||||||
|
"end": 170,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "P",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
},
|
||||||
|
"falseType": {
|
||||||
|
"type": "TsParenthesizedType",
|
||||||
|
"span": {
|
||||||
|
"start": 173,
|
||||||
|
"end": 181,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeAnnotation": {
|
||||||
|
"type": "TsIntersectionType",
|
||||||
|
"span": {
|
||||||
|
"start": 174,
|
||||||
|
"end": 180,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"types": [
|
||||||
|
{
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 174,
|
||||||
|
"end": 175,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 174,
|
||||||
|
"end": 175,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "P",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 178,
|
||||||
|
"end": 180,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 178,
|
||||||
|
"end": 180,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "RP",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TsConditionalType",
|
||||||
|
"span": {
|
||||||
|
"start": 183,
|
||||||
|
"end": 210,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"checkType": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 183,
|
||||||
|
"end": 184,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 183,
|
||||||
|
"end": 184,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "S",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
},
|
||||||
|
"extendsType": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 193,
|
||||||
|
"end": 195,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 193,
|
||||||
|
"end": 195,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "RS",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
},
|
||||||
|
"trueType": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 198,
|
||||||
|
"end": 199,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 198,
|
||||||
|
"end": 199,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "S",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
},
|
||||||
|
"falseType": {
|
||||||
|
"type": "TsParenthesizedType",
|
||||||
|
"span": {
|
||||||
|
"start": 202,
|
||||||
|
"end": 210,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeAnnotation": {
|
||||||
|
"type": "TsIntersectionType",
|
||||||
|
"span": {
|
||||||
|
"start": 203,
|
||||||
|
"end": 209,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"types": [
|
||||||
|
{
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 203,
|
||||||
|
"end": 204,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 203,
|
||||||
|
"end": 204,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "S",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 207,
|
||||||
|
"end": 209,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 207,
|
||||||
|
"end": 209,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "RS",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BlockStatement",
|
||||||
|
"span": {
|
||||||
|
"start": 213,
|
||||||
|
"end": 216,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"stmts": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"interpreter": null
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
class Foo {
|
||||||
|
delete<P extends RouteParams = RP, S extends State = RS>(
|
||||||
|
name: string,
|
||||||
|
path: string,
|
||||||
|
...middleware: RouterMiddleware<P, S>[]
|
||||||
|
): Router<P extends RP ? P : (P & RP), S extends RS ? S : (S & RS)> { }
|
||||||
|
}
|
@ -0,0 +1,691 @@
|
|||||||
|
{
|
||||||
|
"type": "Script",
|
||||||
|
"span": {
|
||||||
|
"start": 0,
|
||||||
|
"end": 243,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"type": "ClassDeclaration",
|
||||||
|
"identifier": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 6,
|
||||||
|
"end": 9,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "Foo",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"declare": false,
|
||||||
|
"span": {
|
||||||
|
"start": 0,
|
||||||
|
"end": 243,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"decorators": [],
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"type": "ClassMethod",
|
||||||
|
"span": {
|
||||||
|
"start": 16,
|
||||||
|
"end": 241,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"key": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 16,
|
||||||
|
"end": 22,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "delete",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"function": {
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"type": "Parameter",
|
||||||
|
"span": {
|
||||||
|
"start": 82,
|
||||||
|
"end": 94,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"decorators": [],
|
||||||
|
"pat": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 82,
|
||||||
|
"end": 94,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "name",
|
||||||
|
"typeAnnotation": {
|
||||||
|
"type": "TsTypeAnnotation",
|
||||||
|
"span": {
|
||||||
|
"start": 86,
|
||||||
|
"end": 94,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeAnnotation": {
|
||||||
|
"type": "TsKeywordType",
|
||||||
|
"span": {
|
||||||
|
"start": 88,
|
||||||
|
"end": 94,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"kind": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"optional": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Parameter",
|
||||||
|
"span": {
|
||||||
|
"start": 104,
|
||||||
|
"end": 116,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"decorators": [],
|
||||||
|
"pat": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 104,
|
||||||
|
"end": 116,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "path",
|
||||||
|
"typeAnnotation": {
|
||||||
|
"type": "TsTypeAnnotation",
|
||||||
|
"span": {
|
||||||
|
"start": 108,
|
||||||
|
"end": 116,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeAnnotation": {
|
||||||
|
"type": "TsKeywordType",
|
||||||
|
"span": {
|
||||||
|
"start": 110,
|
||||||
|
"end": 116,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"kind": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"optional": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Parameter",
|
||||||
|
"span": {
|
||||||
|
"start": 126,
|
||||||
|
"end": 165,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"decorators": [],
|
||||||
|
"pat": {
|
||||||
|
"type": "RestElement",
|
||||||
|
"span": {
|
||||||
|
"start": 126,
|
||||||
|
"end": 165,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"rest": {
|
||||||
|
"start": 126,
|
||||||
|
"end": 129,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"argument": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 129,
|
||||||
|
"end": 139,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "middleware",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeAnnotation": {
|
||||||
|
"type": "TsTypeAnnotation",
|
||||||
|
"span": {
|
||||||
|
"start": 139,
|
||||||
|
"end": 165,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeAnnotation": {
|
||||||
|
"type": "TsArrayType",
|
||||||
|
"span": {
|
||||||
|
"start": 141,
|
||||||
|
"end": 165,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"elemType": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 141,
|
||||||
|
"end": 163,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 141,
|
||||||
|
"end": 157,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "RouterMiddleware",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": {
|
||||||
|
"type": "TsTypeParameterInstantiation",
|
||||||
|
"span": {
|
||||||
|
"start": 157,
|
||||||
|
"end": 163,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 158,
|
||||||
|
"end": 159,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 158,
|
||||||
|
"end": 159,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "P",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 161,
|
||||||
|
"end": 162,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 161,
|
||||||
|
"end": 162,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "S",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"decorators": [],
|
||||||
|
"span": {
|
||||||
|
"start": 16,
|
||||||
|
"end": 241,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"body": {
|
||||||
|
"type": "BlockStatement",
|
||||||
|
"span": {
|
||||||
|
"start": 238,
|
||||||
|
"end": 241,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"stmts": []
|
||||||
|
},
|
||||||
|
"generator": false,
|
||||||
|
"async": false,
|
||||||
|
"typeParameters": {
|
||||||
|
"type": "TsTypeParameterDeclaration",
|
||||||
|
"span": {
|
||||||
|
"start": 22,
|
||||||
|
"end": 72,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "TsTypeParameter",
|
||||||
|
"span": {
|
||||||
|
"start": 23,
|
||||||
|
"end": 49,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 23,
|
||||||
|
"end": 24,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "P",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"constraint": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 33,
|
||||||
|
"end": 44,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 33,
|
||||||
|
"end": 44,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "RouteParams",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
},
|
||||||
|
"default": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 47,
|
||||||
|
"end": 49,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 47,
|
||||||
|
"end": 49,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "RP",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TsTypeParameter",
|
||||||
|
"span": {
|
||||||
|
"start": 51,
|
||||||
|
"end": 71,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 51,
|
||||||
|
"end": 52,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "S",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"constraint": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 61,
|
||||||
|
"end": 66,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 61,
|
||||||
|
"end": 66,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "State",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
},
|
||||||
|
"default": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 69,
|
||||||
|
"end": 71,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 69,
|
||||||
|
"end": 71,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "RS",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"returnType": {
|
||||||
|
"type": "TsTypeAnnotation",
|
||||||
|
"span": {
|
||||||
|
"start": 171,
|
||||||
|
"end": 237,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeAnnotation": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 173,
|
||||||
|
"end": 237,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 173,
|
||||||
|
"end": 179,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "Router",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": {
|
||||||
|
"type": "TsTypeParameterInstantiation",
|
||||||
|
"span": {
|
||||||
|
"start": 179,
|
||||||
|
"end": 237,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"type": "TsConditionalType",
|
||||||
|
"span": {
|
||||||
|
"start": 180,
|
||||||
|
"end": 207,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"checkType": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 180,
|
||||||
|
"end": 181,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 180,
|
||||||
|
"end": 181,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "P",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
},
|
||||||
|
"extendsType": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 190,
|
||||||
|
"end": 192,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 190,
|
||||||
|
"end": 192,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "RP",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
},
|
||||||
|
"trueType": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 195,
|
||||||
|
"end": 196,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 195,
|
||||||
|
"end": 196,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "P",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
},
|
||||||
|
"falseType": {
|
||||||
|
"type": "TsParenthesizedType",
|
||||||
|
"span": {
|
||||||
|
"start": 199,
|
||||||
|
"end": 207,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeAnnotation": {
|
||||||
|
"type": "TsIntersectionType",
|
||||||
|
"span": {
|
||||||
|
"start": 200,
|
||||||
|
"end": 206,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"types": [
|
||||||
|
{
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 200,
|
||||||
|
"end": 201,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 200,
|
||||||
|
"end": 201,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "P",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 204,
|
||||||
|
"end": 206,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 204,
|
||||||
|
"end": 206,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "RP",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TsConditionalType",
|
||||||
|
"span": {
|
||||||
|
"start": 209,
|
||||||
|
"end": 236,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"checkType": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 209,
|
||||||
|
"end": 210,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 209,
|
||||||
|
"end": 210,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "S",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
},
|
||||||
|
"extendsType": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 219,
|
||||||
|
"end": 221,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 219,
|
||||||
|
"end": 221,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "RS",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
},
|
||||||
|
"trueType": {
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 224,
|
||||||
|
"end": 225,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 224,
|
||||||
|
"end": 225,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "S",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
},
|
||||||
|
"falseType": {
|
||||||
|
"type": "TsParenthesizedType",
|
||||||
|
"span": {
|
||||||
|
"start": 228,
|
||||||
|
"end": 236,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeAnnotation": {
|
||||||
|
"type": "TsIntersectionType",
|
||||||
|
"span": {
|
||||||
|
"start": 229,
|
||||||
|
"end": 235,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"types": [
|
||||||
|
{
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 229,
|
||||||
|
"end": 230,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 229,
|
||||||
|
"end": 230,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "S",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TsTypeReference",
|
||||||
|
"span": {
|
||||||
|
"start": 233,
|
||||||
|
"end": 235,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"typeName": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"span": {
|
||||||
|
"start": 233,
|
||||||
|
"end": 235,
|
||||||
|
"ctxt": 0
|
||||||
|
},
|
||||||
|
"value": "RS",
|
||||||
|
"typeAnnotation": null,
|
||||||
|
"optional": false
|
||||||
|
},
|
||||||
|
"typeParams": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"kind": "method",
|
||||||
|
"isStatic": false,
|
||||||
|
"accessibility": null,
|
||||||
|
"isAbstract": false,
|
||||||
|
"isOptional": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"superClass": null,
|
||||||
|
"isAbstract": false,
|
||||||
|
"typeParams": null,
|
||||||
|
"superTypeParams": null,
|
||||||
|
"implements": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"interpreter": null
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user