Fix #14066 issue with stringifying incomplete types (#14135)

This commit is contained in:
PMunch 2020-04-27 18:43:02 +02:00 • committed by GitHub
commit 0e6eb96a5f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -589,27 +589,41 @@ proc typeToString(typ: PType, prefer: TPreferedDesc = preferName): string =
else: else:
result = "typeof(" & renderTree(t.n) & ")" result = "typeof(" & renderTree(t.n) & ")"
of tyArray: of tyArray:
result = "array"
if t.len > 0:
if t[0].kind == tyRange: if t[0].kind == tyRange:
result = "array[" & rangeToStr(t[0].n) & ", " & result &= "[" & rangeToStr(t[0].n) & ", " &
typeToString(t[1]) & ']' typeToString(t[1]) & ']'
else: else:
result = "array[" & typeToString(t[0]) & ", " & result &= "[" & typeToString(t[0]) & ", " &
typeToString(t[1]) & ']' typeToString(t[1]) & ']'
of tyUncheckedArray: of tyUncheckedArray:
result = "UncheckedArray[" & typeToString(t[0]) & ']' result = "UncheckedArray"
if t.len > 0:
result &= "[" & typeToString(t[0]) & ']'
of tySequence: of tySequence:
if t.sym != nil and prefer != preferResolved: if t.sym != nil and prefer != preferResolved:
result = t.sym.name.s result = t.sym.name.s
else: else:
result = "seq[" & typeToString(t[0]) & ']' result = "seq"
if t.len > 0:
result &= "[" & typeToString(t[0]) & ']'
of tyOpt: of tyOpt:
result = "opt[" & typeToString(t[0]) & ']' result = "opt"
if t.len > 0:
result &= "opt[" & typeToString(t[0]) & ']'
of tyOrdinal: of tyOrdinal:
result = "ordinal[" & typeToString(t[0]) & ']' result = "ordinal"
if t.len > 0:
result &= "[" & typeToString(t[0]) & ']'
of tySet: of tySet:
result = "set[" & typeToString(t[0]) & ']' result = "set"
if t.len > 0:
result &= "[" & typeToString(t[0]) & ']'
of tyOpenArray: of tyOpenArray:
result = "openArray[" & typeToString(t[0]) & ']' result = "openArray"
if t.len > 0:
result &= "[" & typeToString(t[0]) & ']'
of tyDistinct: of tyDistinct:
result = "distinct " & typeToString(t[0], result = "distinct " & typeToString(t[0],
if prefer == preferModuleInfo: preferModuleInfo else: preferTypeName) if prefer == preferModuleInfo: preferModuleInfo else: preferTypeName)
@ -624,7 +638,7 @@ proc typeToString(typ: PType, prefer: TPreferedDesc = preferName): string =
if i < t.n.len - 1: result.add(", ") if i < t.n.len - 1: result.add(", ")
result.add(']') result.add(']')
elif t.len == 0: elif t.len == 0:
result = "tuple[]" result = "tuple"
else: else:
if prefer == preferTypeName: result = "(" if prefer == preferTypeName: result = "("
else: result = "tuple of (" else: result = "tuple of ("