Skip to content

Issue #798: Enable warnings as errors for Core for windows.#809

Open
rmpowell77 wants to merge 5 commits into
mainfrom
dev/warnings_to_zero
Open

Issue #798: Enable warnings as errors for Core for windows.#809
rmpowell77 wants to merge 5 commits into
mainfrom
dev/warnings_to_zero

Conversation

@rmpowell77
Copy link
Copy Markdown
Contributor

Fix all MSVC C4244 build warnings and enable warnings as errors

This comprehensive fix addresses all C4244 narrowing conversion warnings across the codebase and enables warnings-as-errors for all targets.

Major changes:

  • Enable warnings-as-errors compiler flags (MSVC /WX, GCC/Clang -Werror)
  • Fix pragma warnings: add GCC/Clang pragmas, fix MSVC pragma syntax
  • Fix missing return statements in operator<=> and Animation::GetVariables
  • Add [[nodiscard]] attributes where return values should not be ignored
  • Remove unused variables and parameters throughout codebase
  • Initialize struct members in CalChartAnimationCommand to prevent warnings
  • Add explicit static_cast for narrowing conversions (float→unsigned, double→int, size_t casts)
  • Add SetVarValue(double) overload to minimize casts in continuity code
  • Fix SetupInstruments iterator to work with std::ranges::subrange
  • Add explicit float casts in CalChartPrintShowToPS for double→float conversions

Files modified (23 files):

  • cmake/compiler.cmake: Enable /WX and -Werror
  • core/CalChartAnimation.cpp: Fix operator<=> return
  • core/CalChartAnimationCommand.h: Initialize struct members
  • core/CalChartAnimationCompile.h/cpp: Add SetVarValue(double) overload
  • core/CalChartConfiguration.cpp: static_cast Radian values to float
  • core/CalChartPoint.cpp: Integer division for radius calculations
  • core/CalChartPrintShowToPS.cpp: Explicit float casts for coordinate conversions
  • core/CalChartSheet.cpp: static_cast std::distance results
  • core/CalChartAnimationSheet.cpp: static_cast std::distance results
  • core/e7_transition_solver.cpp: static_cast for SolverCoord conversions
  • core/viewer_translate.cpp: static_cast angle return to float
  • src/animate.cpp: Remove unused parameters
  • src/BackgroundImages.cpp: Add GCC/Clang pragmas for -Wimplicit-fallthrough
  • src/CalChartDrawPrimitivesHelper.cpp: Add [[nodiscard]], fix pragma syntax
  • src/CalChartFrame.cpp: Remove unused variables
  • src/CalChartView.cpp: Add GCC/Clang pragmas
  • src/ContinuityBrowserPanel.cpp: Remove unused variables
  • src/FieldView.cpp: Fix GetVariables() return statement
  • src/PreferencesContCellSetup.cpp: Remove unused parameter
  • src/SetupInstruments.cpp: Fix iterator traits for std::ranges::subrange
  • src/modes/CalChartModeDrawing.cpp: Remove unused variables
  • src/modes/CalChartModeEdit_ManipulatePointsHelper.cpp: Remove unused variables

All tests pass. No warnings in macOS build (Clang). Ready for Windows CI validation.

@rmpowell77 rmpowell77 force-pushed the dev/warnings_to_zero branch from 64ff72c to 736f638 Compare March 26, 2026 03:55
@rmpowell77 rmpowell77 force-pushed the dev/warnings_to_zero branch 2 times, most recently from 0554a75 to dd8b993 Compare April 5, 2026 21:26
@rmpowell77 rmpowell77 force-pushed the dev/warnings_to_zero branch 2 times, most recently from b4e4055 to 20f0038 Compare April 19, 2026 23:36
Fix all MSVC C4244 build warnings and enable warnings as errors

This comprehensive fix addresses all C4244 narrowing conversion warnings
across the codebase and enables warnings-as-errors for all targets.

Major changes:
- Enable warnings-as-errors compiler flags (MSVC /WX, GCC/Clang -Werror)
- Fix pragma warnings: add GCC/Clang pragmas, fix MSVC pragma syntax
- Fix missing return statements in operator<=> and Animation::GetVariables
- Add [[nodiscard]] attributes where return values should not be ignored
- Remove unused variables and parameters throughout codebase
- Initialize struct members in CalChartAnimationCommand to prevent warnings
- Add explicit static_cast for narrowing conversions (float→unsigned, double→int, size_t casts)
- Add SetVarValue(double) overload to minimize casts in continuity code
- Fix SetupInstruments iterator to work with std::ranges::subrange
- Add explicit float casts in CalChartPrintShowToPS for double→float conversions

Files modified (23 files):
- cmake/compiler.cmake: Enable /WX and -Werror
- core/CalChartAnimation.cpp: Fix operator<=> return
- core/CalChartAnimationCommand.h: Initialize struct members
- core/CalChartAnimationCompile.h/cpp: Add SetVarValue(double) overload
- core/CalChartConfiguration.cpp: static_cast Radian values to float
- core/CalChartPoint.cpp: Integer division for radius calculations
- core/CalChartPrintShowToPS.cpp: Explicit float casts for coordinate conversions
- core/CalChartSheet.cpp: static_cast std::distance results
- core/CalChartAnimationSheet.cpp: static_cast std::distance results
- core/e7_transition_solver.cpp: static_cast for SolverCoord conversions
- core/viewer_translate.cpp: static_cast angle return to float
- src/animate.cpp: Remove unused parameters
- src/BackgroundImages.cpp: Add GCC/Clang pragmas for -Wimplicit-fallthrough
- src/CalChartDrawPrimitivesHelper.cpp: Add [[nodiscard]], fix pragma syntax
- src/CalChartFrame.cpp: Remove unused variables
- src/CalChartView.cpp: Add GCC/Clang pragmas
- src/ContinuityBrowserPanel.cpp: Remove unused variables
- src/FieldView.cpp: Fix GetVariables() return statement
- src/PreferencesContCellSetup.cpp: Remove unused parameter
- src/SetupInstruments.cpp: Fix iterator traits for std::ranges::subrange
- src/modes/CalChartModeDrawing.cpp: Remove unused variables
- src/modes/CalChartModeEdit_ManipulatePointsHelper.cpp: Remove unused variables

All tests pass. No warnings in macOS build (Clang). Ready for Windows CI validation.

Providing different levels to the warnings as errors.
- Linux GCC: Add pragma to suppress false positive -Wmaybe-uninitialized on structured bindings
- Windows MSVC: Fix C4244 narrowing conversions with explicit casts
- Windows MSVC: Fix C4267 size_t to int conversions
- Windows MSVC: Suppress C4996 unsafe function warnings for gmtime/ctime
- Windows MSVC: Guard Clang-specific #pragma mark with #ifdef
- All platforms: Add static_cast for double/float conversions
Add missing 'f' suffix to lines 771-776 in ValueDefined::Get() mapping
Windows MSVC fixes:
- CalChartAnimationSheet.cpp: Cast whichSheet to int for GetSheetName
- CalChartSheet.cpp: Cast enumerate index to int for GenerateCurve
- CalChartShow.cpp: Cast GetCurrentSheetNum() to int
- CalChartPrintShowToPS.cpp: Add static_cast<float> for all DPI calculations
- e7_transition_solver.cpp: Cast int division to float

Linux GCC fixes:
- CalChartContinuityToken.cpp: Suppress -Wnonnull false positive in vector<byte> operations
@rmpowell77 rmpowell77 force-pushed the dev/warnings_to_zero branch from e2410ad to f94ced7 Compare April 21, 2026 05:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant