Tcl Source Code

View Ticket
Login
Ticket UUID: 1dcda0e862a79254fc1188f49848666b9490e991
Title: Build broken (trunk branch) tclCompExpr.c tclOOCall.c
Type: Bug Version: trunk, core-9-0-branch
Submitter: fvogel Created on: 2025-05-24 08:31:52
Subsystem: None Assigned To: jan.nijtmans
Priority: 5 Medium Severity: Severe
Status: Closed Last Modified: 2025-05-26 11:51:58
Resolution: Fixed Closed By: jan.nijtmans
    Closed on: 2025-05-26 11:51:58
Description:

Building Tcl trunk branch on Windows with MSVC 2022 spits:

tclCompCmdsSZ.c
tclCompExpr.c
C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\generic\tclCompExpr.c(175): error C2220: l'avertissement suivant est traité comme une erreur
C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\generic\tclCompExpr.c(175): warning C5287: les opérandes sont des types enum différents « LexemeTypes » et « LexemeCodes » ; utilisez un forçage de type explicite pour mettre cet avertissement en sourdine
C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\generic\tclCompExpr.c(175): note: pour simplifier la migration, utilisez temporairement l'indicateur /Wv:18 avec la version du compilateur que vous avez utilisé pour générer sans avertissement
C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\generic\tclCompExpr.c(185): warning C5287: les opérandes sont des types enum différents « LexemeTypes » et « LexemeCodes » ; utilisez un forçage de type explicite pour mettre cet avertissement en sourdine
C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\generic\tclCompExpr.c(185): note: pour simplifier la migration, utilisez temporairement l'indicateur /Wv:18 avec la version du compilateur que vous avez utilisé pour générer sans avertissement
C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\generic\tclCompExpr.c(186): warning C5287: les opérandes sont des types enum différents « LexemeTypes » et « LexemeCodes » ; utilisez un forçage de type explicite pour mettre cet avertissement en sourdine
C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\generic\tclCompExpr.c(186): note: pour simplifier la migration, utilisez temporairement l'indicateur /Wv:18 avec la version du compilateur que vous avez utilisé pour générer sans avertissement
C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\generic\tclCompExpr.c(187): warning C5287: les opérandes sont des types enum différents « LexemeTypes » et « LexemeCodes » ; utilisez un forçage de type explicite pour mettre cet avertissement en sourdine
C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\generic\tclCompExpr.c(187): note: pour simplifier la migration, utilisez temporairement l'indicateur /Wv:18 avec la version du compilateur que vous avez utilisé pour générer sans avertissement
C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\generic\tclCompExpr.c(218): warning C5287: les opérandes sont des types enum différents « LexemeTypes » et « LexemeCodes » ; utilisez un forçage de type explicite pour mettre cet avertissement en sourdine
C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\generic\tclCompExpr.c(218): note: pour simplifier la migration, utilisez temporairement l'indicateur /Wv:18 avec la version du compilateur que vous avez utilisé pour générer sans avertissement
C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\generic\tclCompExpr.c(219): warning C5287: les opérandes sont des types enum différents « LexemeTypes » et « LexemeCodes » ; utilisez un forçage de type explicite pour mettre cet avertissement en sourdine
C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\generic\tclCompExpr.c(219): note: pour simplifier la migration, utilisez temporairement l'indicateur /Wv:18 avec la version du compilateur que vous avez utilisé pour générer sans avertissement
Génération de code en cours...
Compilation en cours...
tclCompile.c
tclConfig.c

[...]

tclOOBasic.c
tclOOCall.c
C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\generic\tclOOCall.c(57): error C2220: l'avertissement suivant est traité comme une erreur
C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\generic\tclOOCall.c(57): warning C5287: les opérandes sont des types enum différents « TclOOCallChainFlags » et « ObjectFlags » ; utilisez un forçage de type explicite pour mettre cet avertissement en sourdine
C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\generic\tclOOCall.c(57): note: pour simplifier la migration, utilisez temporairement l'indicateur /Wv:18 avec la version du compilateur que vous avez utilisé pour générer sans avertissement
C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\generic\tclOOCall.c(1082): warning C5287: les opérandes sont des types enum différents « TclOOCallChainFlags » et « CallChainFlags » ; utilisez un forçage de type explicite pour mettre cet avertissement en sourdine
C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\generic\tclOOCall.c(1082): note: pour simplifier la migration, utilisez temporairement l'indicateur /Wv:18 avec la version du compilateur que vous avez utilisé pour générer sans avertissement
C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\generic\tclOOCall.c(1185): warning C5287: les opérandes sont des types enum différents « CallChainFlags » et « ObjectFlags » ; utilisez un forçage de type explicite pour mettre cet avertissement en sourdine
C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\generic\tclOOCall.c(1185): note: pour simplifier la migration, utilisez temporairement l'indicateur /Wv:18 avec la version du compilateur que vous avez utilisé pour générer sans avertissement
C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\generic\tclOOCall.c(1503): warning C5287: les opérandes sont des types enum différents « TclOOCallChainFlags » et « ObjectFlags » ; utilisez un forçage de type explicite pour mettre cet avertissement en sourdine
C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\generic\tclOOCall.c(1503): note: pour simplifier la migration, utilisez temporairement l'indicateur /Wv:18 avec la version du compilateur que vous avez utilisé pour générer sans avertissement
tclOODefineCmds.c
tclOOInfo.c

[...]

tclVar.c
Génération de code en cours...
NMAKE : fatal error U1077: 'cl -nologo -c   /DHAVE_CPUID=1 -W3 -wd4090 -wd4146 -wd4311 -wd4312 -WX -FpC:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\Debug_AMD64_VC1944\tcl_Dynamic\ -Zi -Od  -fp:strict -RTC1 -MDd -I"C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\win" -I"C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\generic"  -I"C:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\..\libtommath"  /DMP_PREC=4 /Dinline=__inline /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /DMP_FIXED_CUTOFFS /DSTDC_HEADERS /DUSE_NMAKE=1 /DHAVE_STDINT_H=1 /DHAVE_INTTYPES_H=1 /DHAVE_STDBOOL_H=1 /DTCL_WITH_EXTERNAL_TOMMATH /DMP_64BIT /DTCL_CFG_DO64BIT   /DBUILD_tcl -FoC:\Users\francois\Documents\Development\tcltk-fossil\tcl\win\Debug_AMD64_VC1944\tcl_Dynamic\ @C:\Users\francois\AppData\Local\Temp\nmAA18.tmp'á: code retour '0x2'
Stop.

(Sorry, error messages are in French).

Interestingly this does not seem to happen at Github CI.

In trunk the issue in tclCompExpr.c happens first with commit [47f9090e53].

In trunk the issue in tclOOCall.c happens first with commit [c6393caddb].

Strangely, these commits are several months old and I'm sure I have built Tcl trunk since these commits went in. Perhaps this is due to a yesterday's update of MSVC. I'm running MSVC 2022 64 biots version 17.14.2

User Comments: jan.nijtmans added on 2025-05-26 11:51:58:

Fixed [a60bfcf236101794|here] by just disabling the warning.

Since MSVC is the only compiler spitting out this warning, and the code would only become uglier when adapting for this warning ....


fvogel added on 2025-05-25 16:56:44:

It really is a new warning from recent VS 2022 versions. And we're not alone:

https://bugs.openjdk.org/browse/JDK-8357193 : they disabled the warning.

https://fossil-scm.org/forum/forumpost/a5a992e657 : they changed their code.


apnadkarni added on 2025-05-25 16:30:07:
Strange. I build with VS 2022 too and do not see this. May depend on the revision. Mine is a little old.