Merge tyUncheckedArray with tySeq in typeRel (#23866)

Ref https://github.com/nim-lang/Nim/issues/23836#issuecomment-2233957324

Their types are basically equivalent so they should behave the same way
for type relations.
This commit is contained in:
SirOlaf
2024-07-20 15:46:25 +02:00
committed by GitHub
parent 31ee75f10e
commit 9ca646acd4
2 changed files with 6 additions and 10 deletions

View File

@@ -1305,11 +1305,6 @@ proc typeRel(c: var TCandidate, f, aOrig: PType,
else:
if lengthOrd(c.c.config, fRange) != lengthOrd(c.c.config, aRange):
result = isNone
of tyUncheckedArray:
if a.kind == tyUncheckedArray:
result = typeRel(c, elementType(f), elementType(a), flags)
if result < isGeneric: result = isNone
else: discard
of tyOpenArray, tyVarargs:
# varargs[untyped] is special too but handled earlier. So we only need to
# handle varargs[typed]:
@@ -1350,9 +1345,8 @@ proc typeRel(c: var TCandidate, f, aOrig: PType,
typeRel(c, base(f), base(a), flags) >= isGeneric:
result = isConvertible
else: discard
of tySequence:
case a.kind
of tySequence:
of tySequence, tyUncheckedArray:
if a.kind == f.kind:
if (f[0].kind != tyGenericParam) and (a.elementType.kind == tyEmpty):
result = isSubtype
else:
@@ -1367,8 +1361,8 @@ proc typeRel(c: var TCandidate, f, aOrig: PType,
result = isSubtype
else:
result = isNone
of tyNil: result = isNone
else: discard
elif a.kind == tyNil:
result = isNone
of tyOrdinal:
if isOrdinalType(a):
var x = if a.kind == tyOrdinal: a.elementType else: a

View File

@@ -0,0 +1,2 @@
type p = ptr UncheckedArray[char]
doAssert p is ptr UncheckedArray