Skip to content

Commit b231b70

Browse files
authoredDec 29, 2021
Make expectError support TS2820 error introduced in TypeScript 4.5 (#139)
1 parent 5347e25 commit b231b70

File tree

4 files changed

+13
-1
lines changed

4 files changed

+13
-1
lines changed
 

Diff for: ‎source/lib/compiler.ts

+1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ const expectErrordiagnosticCodesToIgnore = new Set<DiagnosticCode>([
3737
DiagnosticCode.NewExpressionTargetLackingConstructSignatureHasAnyType,
3838
DiagnosticCode.MemberCannotHaveOverrideModifierBecauseItIsNotDeclaredInBaseClass,
3939
DiagnosticCode.MemberMustHaveOverrideModifier,
40+
DiagnosticCode.StringLiteralTypeIsNotAssignableToUnionTypeWithSuggestion,
4041
]);
4142

4243
type IgnoreDiagnosticResult = 'preserve' | 'ignore' | Location;

Diff for: ‎source/lib/interfaces.ts

+1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export enum DiagnosticCode {
4343
PropertyMissingInType1ButRequiredInType2 = 2741,
4444
NoOverloadExpectsCountOfTypeArguments = 2743,
4545
NoOverloadMatches = 2769,
46+
StringLiteralTypeIsNotAssignableToUnionTypeWithSuggestion = 2820,
4647
MemberCannotHaveOverrideModifierBecauseItIsNotDeclaredInBaseClass = 4113,
4748
MemberMustHaveOverrideModifier = 4114,
4849
NewExpressionTargetLackingConstructSignatureHasAnyType = 7009,

Diff for: ‎source/test/fixtures/expect-error/values/index.d.ts

+6
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,9 @@ export function atLeastOne(...expected: [unknown, ...Array<unknown>]): void;
1818
export interface Options<T> {}
1919

2020
export class MyClass {}
21+
22+
export const triggerSuggestion: {
23+
// fooOrBar must be of union type to trigger TS2820, otherwise TypeScript will
24+
// emit a regular TS2322 error without the "Did you mean..." suggestion.
25+
fooOrBar: 'foo' | 'bar';
26+
};

Diff for: ‎source/test/fixtures/expect-error/values/index.test-d.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {expectError} from '../../../..';
2-
import {default as one, atLeastOne, foo, getFoo, HasKey, hasProperty, MyClass, Options} from '.';
2+
import {default as one, atLeastOne, foo, getFoo, HasKey, hasProperty, MyClass, Options, triggerSuggestion} from '.';
33

44
expectError<string>(1);
55
expectError<string>('fo');
@@ -33,3 +33,7 @@ expectError(MyClass());
3333

3434
// 'new' expression, whose target lacks a construct signature, implicitly has an 'any' type.
3535
expectError(new hasProperty({name: 'foo'}));
36+
37+
expectError(() => {
38+
triggerSuggestion.fooOrBar = 'fooo';
39+
})

0 commit comments

Comments
 (0)
Please sign in to comment.