Skip to content

Commit ce4c95f

Browse files
fix error reporting
1 parent db9dd38 commit ce4c95f

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

src/compiler/checker.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1685,11 +1685,10 @@ namespace ts {
16851685
return type;
16861686
}
16871687

1688-
function createNonPrimitiveType(): NonPrimitiveType {
1689-
const type = <NonPrimitiveType>setStructuredTypeMembers(
1688+
function createNonPrimitiveType(): ResolvedType {
1689+
const type = setStructuredTypeMembers(
16901690
createObjectType(ObjectFlags.NonPrimitive, undefined),
16911691
emptySymbols, emptyArray, emptyArray, undefined, undefined);
1692-
type.intrinsicName = "object";
16931692
return type;
16941693
}
16951694

@@ -2321,6 +2320,9 @@ namespace ts {
23212320
else if (type.flags & TypeFlags.UnionOrIntersection) {
23222321
writeUnionOrIntersectionType(<UnionOrIntersectionType>type, nextFlags);
23232322
}
2323+
else if (getObjectFlags(type) & ObjectFlags.NonPrimitive) {
2324+
writer.writeKeyword("object");
2325+
}
23242326
else if (getObjectFlags(type) & (ObjectFlags.Anonymous | ObjectFlags.Mapped)) {
23252327
writeAnonymousType(<ObjectType>type, nextFlags);
23262328
}
@@ -3087,6 +3089,10 @@ namespace ts {
30873089
return type && (type.flags & TypeFlags.Never) !== 0;
30883090
}
30893091

3092+
function isTypeNonPrimitive(type: Type) {
3093+
return type === nonPrimitiveType;
3094+
}
3095+
30903096
// Return the type of a binding element parent. We check SymbolLinks first to see if a type has been
30913097
// assigned by contextual typing.
30923098
function getTypeForBindingElementParent(node: VariableLikeDeclaration) {
@@ -7151,7 +7157,6 @@ namespace ts {
71517157
if (source.flags & TypeFlags.Enum && target.flags & TypeFlags.Enum && isEnumTypeRelatedTo(<EnumType>source, <EnumType>target, errorReporter)) return true;
71527158
if (source.flags & TypeFlags.Undefined && (!strictNullChecks || target.flags & (TypeFlags.Undefined | TypeFlags.Void))) return true;
71537159
if (source.flags & TypeFlags.Null && (!strictNullChecks || target.flags & TypeFlags.Null)) return true;
7154-
if (source.flags & TypeFlags.Object && (<ObjectType>source).objectFlags & ObjectFlags.NonPrimitive && target.flags & TypeFlags.Primitive) return false;
71557160
if (relation === assignableRelation || relation === comparableRelation) {
71567161
if (source.flags & TypeFlags.Any) return true;
71577162
if ((source.flags & TypeFlags.Number | source.flags & TypeFlags.NumberLiteral) && target.flags & TypeFlags.EnumLike) return true;
@@ -7470,7 +7475,7 @@ namespace ts {
74707475
}
74717476
}
74727477
}
7473-
else {
7478+
else if (!(source.flags & TypeFlags.Primitive && isTypeNonPrimitive(target))) {
74747479
if (getObjectFlags(source) & ObjectFlags.Reference && getObjectFlags(target) & ObjectFlags.Reference && (<TypeReference>source).target === (<TypeReference>target).target) {
74757480
// We have type references to same target type, see if relationship holds for all type arguments
74767481
if (result = typeArgumentsRelatedTo(<TypeReference>source, <TypeReference>target, reportErrors)) {
@@ -18085,6 +18090,7 @@ namespace ts {
1808518090
case "string":
1808618091
case "symbol":
1808718092
case "void":
18093+
case "object":
1808818094
error(name, message, (<Identifier>name).text);
1808918095
}
1809018096
}

0 commit comments

Comments
 (0)