From 18cea8e9bd9b747e085974d1afc99fd71fe19fa6 Mon Sep 17 00:00:00 2001 From: konsumlamm <44230978+konsumlamm@users.noreply.github.com> Date: Wed, 28 Sep 2022 13:59:27 +0200 Subject: Update message for checking `cast` (#20145) * Update message for checking `cast` * Update error messages in tests --- compiler/semexprs.nim | 10 +++++----- tests/arc/t16558.nim | 2 +- tests/arc/tref_cast_error.nim | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index 90e2f2b23..32bb4c331 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -241,7 +241,10 @@ proc isCastable(c: PContext; dst, src: PType, info: TLineInfo): bool = (skipTypes(dst, abstractInst).kind in IntegralTypes) or (skipTypes(src, abstractInst-{tyTypeDesc}).kind in IntegralTypes) if result and (dstSize > srcSize): - message(conf, info, warnCastSizes, "target type is larger than source type") + var warnMsg = "target type is larger than source type" + warnMsg.add("\n target type: '$1' ($2)" % [$dst, if dstSize == 1: "1 byte" else: $dstSize & " bytes"]) + warnMsg.add("\n source type: '$1' ($2)" % [$src, if srcSize == 1: "1 byte" else: $srcSize & " bytes"]) + message(conf, info, warnCastSizes, warnMsg) if result and src.kind == tyNil: return dst.size <= conf.target.ptrSize @@ -363,10 +366,7 @@ proc semCast(c: PContext, n: PNode): PNode = if tfHasMeta in targetType.flags: localError(c.config, n[0].info, "cannot cast to a non concrete type: '$1'" % $targetType) if not isCastable(c, targetType, castedExpr.typ, n.info): - let tar = $targetType - let alt = typeToString(targetType, preferDesc) - let msg = if tar != alt: tar & "=" & alt else: tar - localError(c.config, n.info, "expression cannot be cast to " & msg) + localError(c.config, n.info, "expression cannot be cast to '$1'" % $targetType) result = newNodeI(nkCast, n.info) result.typ = targetType result.add copyTree(n[0]) diff --git a/tests/arc/t16558.nim b/tests/arc/t16558.nim index 7b6eb4669..0dbe02b33 100644 --- a/tests/arc/t16558.nim +++ b/tests/arc/t16558.nim @@ -1,6 +1,6 @@ discard """ matrix: "--gc:arc" - errormsg: "expression cannot be cast to int" + errormsg: "expression cannot be cast to 'int'" """ block: # bug #16558 diff --git a/tests/arc/tref_cast_error.nim b/tests/arc/tref_cast_error.nim index b0d2faf77..20139c1be 100644 --- a/tests/arc/tref_cast_error.nim +++ b/tests/arc/tref_cast_error.nim @@ -1,6 +1,6 @@ discard """ cmd: "nim c --gc:arc $file" - errormsg: "expression cannot be cast to ref RootObj" + errormsg: "expression cannot be cast to 'ref RootObj'" joinable: false """ -- cgit 1.4.1-2-gfad0 467b0a5b2ebf4e3bbfb510ca317e6141cce0d06'>html/057immutable.cc.html