diff --git a/autotests/folding/test.ts.fold b/autotests/folding/test.ts.fold
--- a/autotests/folding/test.ts.fold
+++ b/autotests/folding/test.ts.fold
@@ -66,7 +66,7 @@
export function isInOpenInterval(start: number, end: number) {
return tersible(a => a > start && a < end, () => `(${start}...${end})`)
}
-const bar = `${x} ${y}`;
+const bar = `${x} ${y}`;
// readonly
function f1(mt: [number, number], rt: readonly [number, number]) {
@@ -89,15 +89,15 @@
one?: string;
two!: string;
}
-let x! = 1;
+let x! = 1;
// Function with multiple arguments
const children = [].map>>(element => {
if (!this.identityProvider) {
return element;
}
return element;
-});
+});
// Numerics
var a = 0xA;
@@ -128,7 +128,7 @@
let f: boolean = true;
let g: number = 0b111001; // Binary
let h: number = 0o436; // Octal
-let i: number = 0xadf0d; // Hexa-Decimal
+let i: number = 0xadf0d; // Hexa-Decimal
const query = query<[number], number>(`
SELECT *
@@ -142,19 +142,19 @@
return database.execute(query)
}
-aa: string ? string
+aa: string ? string
string // Don't highlight
aa: string assa |
- string
+ string
string ;
string
aa: { string
string } // Don't highlight
-
+
aa: [ string
string ]
-aa: ( string
+aa: ( string
string ) // Don't highlight
aa: string
interface a {
@@ -185,5 +185,23 @@
w = () =>
this.a() ? true : this.b() ? false : true;
z = () =>
- this.b() ? hello : k;
+ this.b() ? hello : k;
+}
+
+function foo(arg: T): T extends B ? number : string {
+ if (arg === "A") return 111;
+ return "returning a string";
+}
+
+// Types and logical `&&` and `||` operators after `as` expression
+Date as any || null;
+
+//Assertions
+const assert: (value: unknown) => asserts value = value => {}
+declare function assertIsString(value: unknown): asserts value is string;
+declare function assertIsArrayOfStrings(value: unknown): asserts value is string[];
+declare function assertDefined(value: T): asserts value is NonNullable;
+namespace Debug {
+ export declare function assert(value: unknown, message?: string): asserts value;
+ export declare function assertDefined(value: T): asserts value is NonNullable;
}
diff --git a/autotests/folding/test.tsx.fold b/autotests/folding/test.tsx.fold
--- a/autotests/folding/test.tsx.fold
+++ b/autotests/folding/test.tsx.fold
@@ -9,13 +9,13 @@
function Story(props) {
const SpecificStory = components[props.storyType];
return story={ props.story } attr2="&ref;" attr3="Hello\n" />;
-}
+}
-function
+function
attr1={ /> function return class var 0x123 { } &noRef; hello() React.Component() } attr2="&ref;">
/* no comment*/ function /> return class var 0x123 &ref; hello() React.Component()
./> anyWord />
- { function return class var 0x123 hello() React.Component() }
+ { function return class var 0x123 hello() React.Component() }
>
> >
@@ -27,8 +27,8 @@
// Detect Valid tags
/* comment */ >>
-{ /* comment
- */ />
+{ /* comment
+ */ />
word . }
return /* comment
multiline */ /> /* comment */ />
@@ -134,3 +134,13 @@
info: (arg: T): T ;
> >
}
+
+// Highlight "(
+ arg: T
+) => {
+ const a = arg
+ return a
+}
+> text extends I/> > // Here "" is a tag
diff --git a/autotests/html/test.ts.html b/autotests/html/test.ts.html
--- a/autotests/html/test.ts.html
+++ b/autotests/html/test.ts.html
@@ -72,7 +72,7 @@
export function isInOpenInterval(start: number, end: number) {
return tersible(a => a > start && a < end, () => `(${start}...${end})`)
}
-const bar = `${x} ${y}`;
+const bar = `${x} ${y}`;
// readonly
function f1(mt: [number, number], rt: readonly [number, number]) {
@@ -95,15 +95,15 @@
one?: string;
two!: string;
}
-let x! = 1;
+let x! = 1;
// Function with multiple arguments
const children = [].map<Set<Map<number, string>>>(element => {
if (!this.identityProvider) {
return element;
}
return element;
-});
+});
// Numerics
var a = 0xA;
@@ -134,7 +134,7 @@
let f: boolean = true;
let g: number = 0b111001; // Binary
let h: number = 0o436; // Octal
-let i: number = 0xadf0d; // Hexa-Decimal
+let i: number = 0xadf0d; // Hexa-Decimal
const query = query<[number], number>(`
SELECT *
@@ -148,19 +148,19 @@
return database.execute(query)
}
-aa: <sdf/> string ?<ssd/> string
+aa: <sdf/> string ?<ssd/> string
string // Don't highlight
aa: string assa |
- string
+ string
string ;
string
aa: { string
string } // Don't highlight
-
+
aa: [ string
string ]
-aa: ( string
+aa: ( string
string ) // Don't highlight
aa: string <string>
interface a {
@@ -191,6 +191,24 @@
w = () =>
this.a() ? true : this.b() ? false : true;
z = () =>
- this.b() ? hello : k;
+ this.b() ? hello : k;
+}
+
+function foo<T extends X>(arg: T): T extends B ? number : string {
+ if (arg === "A") return <T extends B ? number : never>111;
+ return <T extends B ? never : string>"returning a string";
+}
+
+// Types and logical `&&` and `||` operators after `as` expression
+Date as any || null;
+
+//Assertions
+const assert: (value: unknown) => asserts value = value => {}
+declare function assertIsString(value: unknown): asserts value is string;
+declare function assertIsArrayOfStrings(value: unknown): asserts value is string[];
+declare function assertDefined<T>(value: T): asserts value is NonNullable<T>;
+namespace Debug {
+ export declare function assert(value: unknown, message?: string): asserts value;
+ export declare function assertDefined<T>(value: T): asserts value is NonNullable<T>;
}