From f7dc760e1e9ddf042e1854dce70616b898db5610 Mon Sep 17 00:00:00 2001 From: Monte Goulding Date: Mon, 10 Oct 2016 09:29:33 +1100 Subject: [PATCH 1/3] Turn on -Werror=switch --- config/mac.gypi | 1 + engine/src/bitmapeffect.cpp | 3 +++ engine/src/customprinter.cpp | 8 +++++-- engine/src/eventqueue.cpp | 26 +++++++++++++++++++++-- engine/src/exec-interface-graphic.cpp | 2 ++ engine/src/exec.h | 7 +++++++ engine/src/funcs.cpp | 24 +++++++++++++++++++++ engine/src/ibmp.cpp | 16 ++++++++++---- engine/src/ide.cpp | 6 ++++++ engine/src/idraw.cpp | 6 ++++++ engine/src/image.cpp | 2 ++ engine/src/mac-av-player.mm | 5 +++++ engine/src/mac-menu.mm | 3 +++ engine/src/mac-qt-player.mm | 5 +++++ engine/src/mac-surface.mm | 3 ++- engine/src/mac-window.mm | 5 +++-- engine/src/metacontext.cpp | 6 ++++++ engine/src/operator.cpp | 4 +++- engine/src/osxprinter.cpp | 10 ++++++++- engine/src/osxtheme.mm | 19 ++++++++++++++--- engine/src/platform-recorder.cpp | 6 ++++++ engine/src/rtf.cpp | 3 +++ engine/src/scrolbar.cpp | 2 ++ lcidlc/src/Interface.cpp | 14 ++++++++++++- lcidlc/src/InterfaceGenerate.cpp | 14 ++++++++++--- lcidlc/src/NativeType.cpp | 4 ++-- lcidlc/src/Parser.cpp | 3 +++ libgraphics/include/graphics.h | 30 ++++++++++++++++----------- revdb/revdb.gyp | 2 ++ 29 files changed, 205 insertions(+), 34 deletions(-) diff --git a/config/mac.gypi b/config/mac.gypi index 91435db32fe..0e6c5ce7a52 100644 --- a/config/mac.gypi +++ b/config/mac.gypi @@ -143,6 +143,7 @@ '-Werror=shadow', '-Werror=unreachable-code', '-Werror=enum-compare', + '-Werror=switch', ], }, }, diff --git a/engine/src/bitmapeffect.cpp b/engine/src/bitmapeffect.cpp index 9562b50df30..48d454646fa 100644 --- a/engine/src/bitmapeffect.cpp +++ b/engine/src/bitmapeffect.cpp @@ -878,6 +878,9 @@ static void MCBitmapEffectsSetUIntProperty(MCBitmapEffect& x_effect, MCBitmapEff } } break; + default: + MCUnreachableReturn(); + break; } } diff --git a/engine/src/customprinter.cpp b/engine/src/customprinter.cpp index fdaca36461f..66c8c6dbd6c 100644 --- a/engine/src/customprinter.cpp +++ b/engine/src/customprinter.cpp @@ -365,10 +365,12 @@ bool MCCustomMetaContext::candomark(MCMark *p_mark) case MARK_TYPE_LINK: // We can always render links natively - even if this is a no-op. return true; + case MARK_TYPE_END: + // Unknown mark so return false. + return false; } - // Unknown mark so return false. - return false; + MCUnreachableReturn(false); } void MCCustomMetaContext::domark(MCMark *p_mark) @@ -2057,6 +2059,8 @@ class MCDebugPrintingDevice: public MCCustomPrintingDevice case kMCCustomPrinterPathClose: Print("close"); break; + case kMCCustomPrinterPathEnd: + MCUnreachable(); } } } diff --git a/engine/src/eventqueue.cpp b/engine/src/eventqueue.cpp index ff495e2a767..edc1f2f66b9 100644 --- a/engine/src/eventqueue.cpp +++ b/engine/src/eventqueue.cpp @@ -529,12 +529,16 @@ static void MCEventQueueDispatchEvent(MCEvent *p_event) t_event -> custom . event -> Dispatch(); break; -#ifdef _MOBILE case kMCEventTypeTouch: +#ifdef _MOBILE handle_touch(t_event -> touch . stack, t_event -> touch . phase, t_event -> touch . id, t_event -> touch . taps, t_event -> touch . x, t_event -> touch . y); +#else + MCUnreachable(); +#endif break; case kMCEventTypeMotion: +#ifdef _MOBILE { MCNameRef t_message; MCStringRef t_motion; @@ -556,28 +560,46 @@ static void MCEventQueueDispatchEvent(MCEvent *p_event) MCdefaultstackptr -> getcurcard() -> message_with_valueref_args(t_message, t_motion); } +#else + MCUnreachable(); +#endif break; case kMCEventTypeAcceleration: +#ifdef _MOBILE { MCAutoStringRef t_value; /* UNCHECKED */ MCStringFormat(&t_value, "%.6f,%.6f,%.6f,%f", t_event -> acceleration . x, t_event -> acceleration . y, t_event -> acceleration . z, t_event -> acceleration . t); MCdefaultstackptr -> getcurcard() -> message_with_valueref_args(MCM_acceleration_changed, *t_value); } +#else + MCUnreachable(); +#endif break; case kMCEventTypeOrientation: +#ifdef _MOBILE MCdefaultstackptr -> getcurcard() -> message(MCM_orientation_changed); +#else + MCUnreachable(); +#endif break; case kMCEventTypeLocation: +#ifdef _MOBILE MCdefaultstackptr -> getcurcard() -> message(t_event -> location . error == nil ? MCM_location_changed : MCM_location_error); +#else + MCUnreachable(); +#endif break; case kMCEventTypeHeading: +#ifdef _MOBILE MCdefaultstackptr -> getcurcard() -> message(t_event -> location . error == nil ? MCM_heading_changed : MCM_heading_error); - break; +#else + MCUnreachable(); #endif + break; } } diff --git a/engine/src/exec-interface-graphic.cpp b/engine/src/exec-interface-graphic.cpp index 92ab9b825ab..2cba8c420e3 100644 --- a/engine/src/exec-interface-graphic.cpp +++ b/engine/src/exec-interface-graphic.cpp @@ -245,6 +245,8 @@ void MCGraphic::SetEditMode(MCExecContext& ctxt, intenum_t mode) case kMCEditModePolygon: t_new_tool = new (nothrow) MCPolygonEditTool(this); break; + case kMCEditModeNone: + break; } m_edit_tool = t_new_tool; diff --git a/engine/src/exec.h b/engine/src/exec.h index f7591521bd6..20540dfb814 100644 --- a/engine/src/exec.h +++ b/engine/src/exec.h @@ -2171,6 +2171,13 @@ extern MCExecMethodInfo *kMCStringsEvalItemOffsetMethodInfo; extern MCExecMethodInfo *kMCStringsEvalLineOffsetMethodInfo; extern MCExecMethodInfo *kMCStringsEvalWordOffsetMethodInfo; extern MCExecMethodInfo *kMCStringsEvalOffsetMethodInfo; +extern MCExecMethodInfo *kMCStringsEvalTokenOffsetMethodInfo; +extern MCExecMethodInfo *kMCStringsEvalSentenceOffsetMethodInfo; +extern MCExecMethodInfo *kMCStringsEvalParagraphOffsetMethodInfo; +extern MCExecMethodInfo *kMCStringsEvalTrueWordOffsetMethodInfo; +extern MCExecMethodInfo *kMCStringsEvalCodepointOffsetMethodInfo; +extern MCExecMethodInfo *kMCStringsEvalCodeunitOffsetMethodInfo; +extern MCExecMethodInfo *kMCStringsEvalByteOffsetMethodInfo; extern MCExecMethodInfo *kMCStringsExecReplaceMethodInfo; extern MCExecMethodInfo *kMCStringsExecFilterWildcardMethodInfo; extern MCExecMethodInfo *kMCStringsExecFilterRegexMethodInfo; diff --git a/engine/src/funcs.cpp b/engine/src/funcs.cpp index bc94d6cdd51..6442e22f616 100644 --- a/engine/src/funcs.cpp +++ b/engine/src/funcs.cpp @@ -575,9 +575,33 @@ void MCChunkOffset::compile(MCSyntaxFactoryRef ctxt) case CT_WORD: MCSyntaxFactoryEvalMethod(ctxt, kMCStringsEvalWordOffsetMethodInfo); break; + case CT_TOKEN: + MCSyntaxFactoryEvalMethod(ctxt, kMCStringsEvalTokenOffsetMethodInfo); + break; case CT_CHARACTER: MCSyntaxFactoryEvalMethod(ctxt, kMCStringsEvalOffsetMethodInfo); break; + case CT_PARAGRAPH: + MCSyntaxFactoryEvalMethod(ctxt, kMCStringsEvalParagraphOffsetMethodInfo); + break; + case CT_SENTENCE: + MCSyntaxFactoryEvalMethod(ctxt, kMCStringsEvalSentenceOffsetMethodInfo); + break; + case CT_TRUEWORD: + MCSyntaxFactoryEvalMethod(ctxt, kMCStringsEvalTrueWordOffsetMethodInfo); + break; + case CT_CODEPOINT: + MCSyntaxFactoryEvalMethod(ctxt, kMCStringsEvalCodepointOffsetMethodInfo); + break; + case CT_CODEUNIT: + MCSyntaxFactoryEvalMethod(ctxt, kMCStringsEvalCodeunitOffsetMethodInfo); + break; + case CT_BYTE: + MCSyntaxFactoryEvalMethod(ctxt, kMCStringsEvalByteOffsetMethodInfo); + break; + default: + MCUnreachable(); + break; } } diff --git a/engine/src/ibmp.cpp b/engine/src/ibmp.cpp index 71b5b3a45f4..7112b4d05da 100644 --- a/engine/src/ibmp.cpp +++ b/engine/src/ibmp.cpp @@ -1902,6 +1902,8 @@ bool MCXBMImageLoader::LoadHeader(uint32_t &r_width, uint32_t &r_height, uint32_ case kMCDefineYHot: t_yhot = t_value; break; + default: + MCUnreachable(); } } } @@ -2369,13 +2371,13 @@ static bool xpm_read_v1_header(IO_handle p_stream, char x_line[XPM_MAX_LINE], ui //t_hotspot.y = t_height / 2; break; - //case kMCDefineXHot: + case kMCDefineXHot: // t_hotspot.x = t_value; - // break; + break; - //case kMCDefineYHot: + case kMCDefineYHot: // t_hotspot.y = t_value; - // break; + break; case kMCDefineFormat: t_format = t_value; @@ -2388,6 +2390,10 @@ static bool xpm_read_v1_header(IO_handle p_stream, char x_line[XPM_MAX_LINE], ui case kMCDefineCharsPerPixel: t_chars_per_pixel = t_value; break; + + case kMCDefineUnknown: + MCUnreachable(); + break; } } } @@ -2902,6 +2908,8 @@ bool MCImageEncodeRawTrueColor(MCImageBitmap *p_bitmap, IO_handle p_stream, Expo case EX_RAW_ABGR: MCBitmapConvertRow(t_row_buffer, (uint32_t*)t_src_ptr, p_bitmap->width); break; + default: + MCUnreachable(); } t_success = IO_NORMAL == IO_write(t_row_buffer, sizeof(uint8_t), t_stride, p_stream); t_byte_count += t_stride; diff --git a/engine/src/ide.cpp b/engine/src/ide.cpp index 80c1980243b..1307f92f32f 100644 --- a/engine/src/ide.cpp +++ b/engine/src/ide.cpp @@ -2486,6 +2486,8 @@ struct MCIdeFilterControlsVisitor: public MCObjectVisitor case kMCIdeFilterPropertyType: MCStringCreateWithNativeChars((char_t*)p_object -> gettypestring(), strlen(p_object -> gettypestring()), (MCStringRef&)&t_left_value); break; + case kMCIdeFilterPropertyNone: + break; } bool t_accept; @@ -2543,6 +2545,10 @@ struct MCIdeFilterControlsVisitor: public MCObjectVisitor } break; + + case kMCIdeFilterOperatorNone: + break; + } if (t_accept) diff --git a/engine/src/idraw.cpp b/engine/src/idraw.cpp index 63d3e885b6e..ec2f34fb825 100644 --- a/engine/src/idraw.cpp +++ b/engine/src/idraw.cpp @@ -317,6 +317,9 @@ void MCImage::drawwithgravity(MCDC *dc, MCRectangle r, MCGravity p_gravity) dx = r . x; dw = r . width; break; + case kMCGravityNone: + MCUnreachable(); + break; } switch(p_gravity) @@ -348,6 +351,9 @@ void MCImage::drawwithgravity(MCDC *dc, MCRectangle r, MCGravity p_gravity) dy = r . y; dh = r . height; break; + case kMCGravityNone: + MCUnreachable(); + break; } drawme(dc, 0, 0, rect . width, rect . height, dx, dy, dw, dh); diff --git a/engine/src/image.cpp b/engine/src/image.cpp index 8cf36c01f2c..98938d47cd0 100644 --- a/engine/src/image.cpp +++ b/engine/src/image.cpp @@ -415,6 +415,8 @@ Boolean MCImage::mdown(uint2 which) return True; } + default: + break; } if (isediting() && diff --git a/engine/src/mac-av-player.mm b/engine/src/mac-av-player.mm index 9ae6356cf0c..3ff34969719 100644 --- a/engine/src/mac-av-player.mm +++ b/engine/src/mac-av-player.mm @@ -1160,6 +1160,9 @@ bool MCMacPlayerSnapshotCVImageBuffer(CVImageBufferRef p_imagebuffer, uint32_t p MCMemoryCopy(m_markers, t_markers -> ptr, m_marker_count * sizeof(MCPlatformPlayerDuration)); } break; + + default: + break; } m_synchronizing = false; @@ -1284,6 +1287,8 @@ static Boolean AVAssetHasType(AVAsset *p_asset, NSString *p_type) case kMCPlatformPlayerPropertyScalefactor: *(double *)r_value = m_scale; break; + default: + break; } } diff --git a/engine/src/mac-menu.mm b/engine/src/mac-menu.mm index f8a161ee530..525de109853 100644 --- a/engine/src/mac-menu.mm +++ b/engine/src/mac-menu.mm @@ -842,6 +842,9 @@ void MCPlatformSetMenuItemProperty(MCPlatformMenuRef p_menu, uindex_t p_index, M } } break; + + case kMCPlatformMenuItemPropertyUnknown: + MCUnreachable(); } } diff --git a/engine/src/mac-qt-player.mm b/engine/src/mac-qt-player.mm index a53e21411b3..06657f30f77 100644 --- a/engine/src/mac-qt-player.mm +++ b/engine/src/mac-qt-player.mm @@ -771,6 +771,8 @@ inline NSComparisonResult do_QTTimeCompare (QTTime time, QTTime otherTime) MCMemoryCopy(m_markers, t_markers -> ptr, m_marker_count * sizeof(MCPlatformPlayerDuration)); } break; + default: + MCUnreachable(); } m_synchronizing = false; @@ -906,6 +908,9 @@ static Boolean QTMovieHasType(Movie tmovie, OSType movtype) case kMCPlatformPlayerPropertyScalefactor: *(double *)r_value = m_scale; break; + + default: + MCUnreachable(); } } diff --git a/engine/src/mac-surface.mm b/engine/src/mac-surface.mm index d905e5267d0..1966f66be22 100644 --- a/engine/src/mac-surface.mm +++ b/engine/src/mac-surface.mm @@ -396,9 +396,10 @@ static inline CGBlendMode MCGBlendModeToCGBlendMode(MCGBlendMode p_blend) return kCGBlendModeColor; case kMCGBlendModeLuminosity: return kCGBlendModeLuminosity; + default: + MCUnreachableReturn(kCGBlendModeNormal); // unknown blend mode } - MCUnreachableReturn(kCGBlendModeNormal); // unknown blend mode } static void MCMacRenderCGImage(CGContextRef p_target, CGRect p_dst_rect, CGImageRef p_src, MCGFloat p_alpha, MCGBlendMode p_blend) diff --git a/engine/src/mac-window.mm b/engine/src/mac-window.mm index 69a432eb4ad..e0aa8639093 100644 --- a/engine/src/mac-window.mm +++ b/engine/src/mac-window.mm @@ -2046,9 +2046,10 @@ - (void)setFrameSize: (NSSize)size RealizeAndNotify(); *(void**)r_value = m_window_handle; return true; + + default: + return false; } - - return false; } void MCMacPlatformWindow::DoShow(void) diff --git a/engine/src/metacontext.cpp b/engine/src/metacontext.cpp index 3e4bdb42696..723ce53d7cd 100644 --- a/engine/src/metacontext.cpp +++ b/engine/src/metacontext.cpp @@ -888,6 +888,12 @@ static bool mark_indirect(MCContext *p_context, MCMark *p_mark, MCMark *p_upto_m t_path -> release(); } break; + + case MARK_TYPE_END: + case MARK_TYPE_EPS: + case MARK_TYPE_LINK: + case MARK_TYPE_GROUP: + break; } } diff --git a/engine/src/operator.cpp b/engine/src/operator.cpp index 0b9c33e5887..5d6cb6b94ae 100644 --- a/engine/src/operator.cpp +++ b/engine/src/operator.cpp @@ -632,7 +632,9 @@ void MCIs::eval_ctxt(MCExecContext &ctxt, MCExecValue &r_value) else MCEngineEvalIsNotStrictlyAnArray(ctxt, *t_value, t_result); break; - } + default: + MCUnreachable(); + } if (!ctxt . HasError()) MCExecValueTraits::set(r_value, t_result); diff --git a/engine/src/osxprinter.cpp b/engine/src/osxprinter.cpp index 01ecd63fd81..dd6130d393c 100644 --- a/engine/src/osxprinter.cpp +++ b/engine/src/osxprinter.cpp @@ -887,7 +887,12 @@ void MCMacOSXPrinter::GetProperties(bool p_include_output) CFRelease(t_output_file); t_output_type = kPMDestinationFile; } - break; + break; + case PRINTER_OUTPUT_WORKFLOW: + case PRINTER_OUTPUT_SYSTEM: + MCUnreachable(); + break; + } t_err = PMSessionSetDestination(m_session, m_settings, t_output_type, kPMDocumentFormatPDF, t_output_url); @@ -1877,6 +1882,9 @@ void MCQuartzMetaContext::domark(MCMark *p_mark) executegroup(p_mark); } break; + + default: + break; } CGContextRestoreGState(m_context); diff --git a/engine/src/osxtheme.mm b/engine/src/osxtheme.mm index ad2a0e8cc1e..acb21b427fa 100644 --- a/engine/src/osxtheme.mm +++ b/engine/src/osxtheme.mm @@ -152,9 +152,9 @@ static void converttomcrect(const Rect &macR, MCRectangle &mcR) case WTHEME_TYPE_TAB: return True; break; - + default: + return True; } - return True; } int4 MCNativeTheme::getmetric(Widget_Metric wmetric) @@ -182,8 +182,9 @@ static void converttomcrect(const Rect &macR, MCRectangle &mcR) case WTHEME_METRIC_TABBUTTON_HEIGHT: return 21; break; + default: + return 0; } - return 0; } int4 MCNativeTheme::getwidgetmetric(const MCWidgetInfo &winfo, Widget_Metric wmetric) @@ -273,6 +274,8 @@ static void converttomcrect(const Rect &macR, MCRectangle &mcR) else drect = srect; } + default: + break; } MCTheme::getwidgetrect(winfo,wmetric,srect,drect); } @@ -384,6 +387,8 @@ static void converttomcrect(const Rect &macR, MCRectangle &mcR) dc -> drawtheme(THEME_DRAW_TYPE_GROUP, &t_info); } break; + default: + break; } return True; @@ -434,6 +439,9 @@ static void getthemebuttonpartandstate(const MCWidgetInfo &widgetinfo, HIThemeBu case WTHEME_TYPE_PULLDOWN: themebuttonkind = kThemeBevelButton; break; + default: + MCUnreachable(); + break; } //set state stuff @@ -1067,6 +1075,11 @@ void MCMacDrawTheme(MCThemeDrawType p_type, MCThemeDrawInfo& p_info, CGContextRe HIThemeDrawFocusRect(&t_bounds, p_info . focus_rect . focused, t_context, kHIThemeOrientationNormal); } break; + + case THEME_DRAW_TYPE_MENU: + case THEME_DRAW_TYPE_GTK: + MCUnreachable(); + break; } } diff --git a/engine/src/platform-recorder.cpp b/engine/src/platform-recorder.cpp index 0aa1f1dd155..a891cdda5d5 100644 --- a/engine/src/platform-recorder.cpp +++ b/engine/src/platform-recorder.cpp @@ -98,6 +98,9 @@ void MCPlatformSoundRecorder::SetProperty(MCPlatformSoundRecorderProperty p_prop case kMCPlatformSoundRecorderPropertyCompressionType: m_configuration . compression_type = *(unsigned int *)p_value; break; + case kMCPlatformSoundRecorderPropertyExtraInfo: + MCUnreachable(); + break; } } @@ -120,6 +123,9 @@ void MCPlatformSoundRecorder::GetProperty(MCPlatformSoundRecorderProperty p_prop case kMCPlatformSoundRecorderPropertyCompressionType: *(unsigned int *)r_value = m_configuration . compression_type; break; + case kMCPlatformSoundRecorderPropertyExtraInfo: + MCUnreachable(); + break; } } diff --git a/engine/src/rtf.cpp b/engine/src/rtf.cpp index 723675aa461..9135b1bc466 100644 --- a/engine/src/rtf.cpp +++ b/engine/src/rtf.cpp @@ -373,6 +373,9 @@ RTFStatus RTFReader::Parse(void) t_status = ParseLegacyListPrefix(t_token, t_value); break; + case kRTFDestinationLegacyListSuffix: + break; + case kRTFDestinationListTable: t_status = ParseListTable(t_token, t_value); break; diff --git a/engine/src/scrolbar.cpp b/engine/src/scrolbar.cpp index caae86b0c7c..f2049f30f4a 100644 --- a/engine/src/scrolbar.cpp +++ b/engine/src/scrolbar.cpp @@ -363,6 +363,8 @@ Boolean MCScrollbar::mdown(uint2 which) case WTHEME_PART_TRACK_INC: mode = SM_PAGEINC; break; + default: + break; } } else diff --git a/lcidlc/src/Interface.cpp b/lcidlc/src/Interface.cpp index d25a887ec03..d4ac6674844 100644 --- a/lcidlc/src/Interface.cpp +++ b/lcidlc/src/Interface.cpp @@ -180,8 +180,20 @@ static bool InterfaceReport(InterfaceRef self, Position p_where, InterfaceError case kInterfaceErrorJavaImpliesNonIndirectReturn: fprintf(stderr, "Java mapped methods cannot have indirect return value\n"); break; + case kInterfaceErrorMethodsCannotHaveVariants: + fprintf(stderr, "Java mapped methods cannot have variants\n"); + break; + case kInterfaceErrorMethodsAreAlwaysTail: + fprintf(stderr, "Java mapped methods are always tail\n"); + break; + case kInterfaceErrorMethodsMustBeJava: + fprintf(stderr, "Java mapped methods must be java\n"); + break; + case kInterfaceErrorNone: + MCUnreachableReturn(false); + break; } - + self -> invalid = true; return true; diff --git a/lcidlc/src/InterfaceGenerate.cpp b/lcidlc/src/InterfaceGenerate.cpp index 533ff737136..846f5707f38 100644 --- a/lcidlc/src/InterfaceGenerate.cpp +++ b/lcidlc/src/InterfaceGenerate.cpp @@ -152,6 +152,8 @@ static NativeType map_native_type(HandlerMapping p_mapping, NameRef p_type) return kNativeTypeJavaUTF8Data; case kNativeTypeUTF16CData: return kNativeTypeJavaUTF16Data; + default: + break; } } @@ -1171,8 +1173,6 @@ static TypeMapper *map_parameter_type(InterfaceRef self, HandlerMapping p_mappin case kNativeTypeUTF16CData: return new CDataTypeMapper(t_type); case kNativeTypeLCArray: return new LCArrayTypeMapper(t_type); -// case kNativeTypeCArray: -// case kNativeTypeCDictionary: case kNativeTypeObjcString: return new ObjcStringTypeMapper; case kNativeTypeObjcNumber: return new ObjcNumberTypeMapper; case kNativeTypeObjcData: return new ObjcDataTypeMapper; @@ -1186,8 +1186,16 @@ static TypeMapper *map_parameter_type(InterfaceRef self, HandlerMapping p_mappin case kNativeTypeJavaUTF8Data: case kNativeTypeJavaUTF16Data: return new JavaDataTypeMapper(t_type); + case kNativeTypeCArray: + case kNativeTypeCDictionary: + case kNativeTypeJavaArray: + case kNativeTypeJavaNumber: + case kNativeTypeJavaDictionary: + case kNativeTypeNone: + return nil; } - return nil; + + MCUnreachableReturn(nil); } static void map_parameter(InterfaceRef self, HandlerMapping p_mapping, HandlerParameter *p_parameter, uint32_t k, MappedParameter& r_param) diff --git a/lcidlc/src/NativeType.cpp b/lcidlc/src/NativeType.cpp index e138d8d1871..abfba5bbcb9 100644 --- a/lcidlc/src/NativeType.cpp +++ b/lcidlc/src/NativeType.cpp @@ -121,9 +121,9 @@ const char *NativeTypeGetSecondaryPrefix(NativeType p_type) case kNativeTypeObjcArray: case kNativeTypeObjcDictionary: return "*"; + default: + return ""; } - - return ""; } const char *NativeTypeGetTag(NativeType p_type) diff --git a/lcidlc/src/Parser.cpp b/lcidlc/src/Parser.cpp index ecc52f8f657..03c3fb58329 100644 --- a/lcidlc/src/Parser.cpp +++ b/lcidlc/src/Parser.cpp @@ -143,6 +143,9 @@ static bool ParserReport(ParserRef self, Position p_where, ParserError p_error, fprintf(stderr, "%s'%s' expected\n", i == 0 ? "" : " or ", p_hints[i]); } break; + case kParserErrorNone: + abort(); + break; } self -> syntax_error = true; diff --git a/libgraphics/include/graphics.h b/libgraphics/include/graphics.h index 828847ad20b..4282aa4e0ff 100644 --- a/libgraphics/include/graphics.h +++ b/libgraphics/include/graphics.h @@ -292,10 +292,11 @@ enum MCGFillRule { kMCGFillRuleNonZero, kMCGFillRuleEvenOdd, - - kMCGFillRuleCount }; +static const intenum_t kMCGFillRuleCount = 2; + + enum MCGPaintStyle { kMCGPaintStyleOpaque, @@ -360,28 +361,31 @@ enum MCGBlendMode kMCGBlendModeLegacyAdMin, kMCGBlendModeLegacyBlendSource, kMCGBlendModeLegacyBlendDestination, - - kMCGBlendModeCount, }; +static const intenum_t kMCGBlendModeCount = 54; + + enum MCGJoinStyle { kMCGJoinStyleBevel, kMCGJoinStyleRound, kMCGJoinStyleMiter, - - kMCGJoinStyleCount }; +static const intenum_t kMCGJoinStyleCount = 3; + + enum MCGCapStyle { kMCGCapStyleButt, kMCGCapStyleRound, kMCGCapStyleSquare, - - kMCGCapStyleCount }; +static const intenum_t kMCGCapStyleCount = 3; + + enum MCGRasterFormat { kMCGRasterFormat_xRGB, // no alpha channel @@ -397,10 +401,11 @@ enum MCGImageFilter kMCGImageFilterLow, kMCGImageFilterMedium, kMCGImageFilterHigh, - - kMCGImageFilterCount }; +static const intenum_t kMCGImageFilterCount = 4; + + enum MCGGradientFunction { kMCGGradientFunctionLinear, @@ -411,10 +416,11 @@ enum MCGGradientFunction kMCGLegacyGradientSpiral, kMCGLegacyGradientXY, kMCGLegacyGradientSqrtXY, - - kMCGGradientFunctionCount }; +static const intenum_t kMCGGradientFunctionCount = 7; + + enum MCGGradientTileMode { kMCGGradientTileModeClamp, diff --git a/revdb/revdb.gyp b/revdb/revdb.gyp index 85b2767d955..149fd6d3a9c 100644 --- a/revdb/revdb.gyp +++ b/revdb/revdb.gyp @@ -484,6 +484,7 @@ [ # Error in ../../thirdparty/libsqlite/include/qry_dat.h '-Werror=return-type', + '-Werror=switch', ], }, }, @@ -565,6 +566,7 @@ [ # Error in ../../thirdparty/libsqlite/include/qry_dat.h '-Werror=return-type', + '-Werror=switch', ], }, }, From aac360e803a7c202a49ba922b1b13effd243919f Mon Sep 17 00:00:00 2001 From: Monte Goulding Date: Fri, 28 Oct 2016 21:00:30 +1100 Subject: [PATCH 2/3] [Cleanup] Remove reference to kMCSOutputTextEncodingUndefined --- engine/src/srvcgi.cpp | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/engine/src/srvcgi.cpp b/engine/src/srvcgi.cpp index 2a699f1d12e..9c660a59b08 100644 --- a/engine/src/srvcgi.cpp +++ b/engine/src/srvcgi.cpp @@ -723,19 +723,27 @@ static bool cgi_native_from_encoding(MCSOutputTextEncoding p_encoding, MCDataRef { MCStringEncoding t_encoding; - if (p_encoding == kMCSOutputTextEncodingUTF8) - t_encoding = kMCStringEncodingUTF8; - else if (p_encoding == kMCSOutputTextEncodingWindows1252) - t_encoding = kMCStringEncodingWindows1252; - else if (p_encoding == kMCSOutputTextEncodingMacRoman) - t_encoding = kMCStringEncodingMacRoman; - else if (p_encoding == kMCSOutputTextEncodingISO8859_1) - t_encoding = kMCStringEncodingISO8859_1; - else if (p_encoding == kMCSOutputTextEncodingNative) - t_encoding = kMCStringEncodingNative; - else // kMCSOutputTextEncodingUndefined - return false; - + if (kMCSOutputTextEncodingNative == p_encoding) + t_encoding = kMCStringEncodingNative; + else + { + switch(p_encoding) + { + case kMCSOutputTextEncodingUTF8: + t_encoding = kMCStringEncodingUTF8; + break; + case kMCSOutputTextEncodingWindows1252: + t_encoding = kMCStringEncodingWindows1252; + break; + case kMCSOutputTextEncodingISO8859_1: + t_encoding = kMCStringEncodingISO8859_1; + break; + case kMCSOutputTextEncodingMacRoman: + t_encoding = kMCStringEncodingMacRoman; + break; + } + } + if (MCStringDecode(p_text, t_encoding, false, r_native_text)) { MCStringNativize(r_native_text); From 73109517472c535ad304e3b718707850e2efc533 Mon Sep 17 00:00:00 2001 From: Monte Goulding Date: Wed, 2 Nov 2016 15:43:46 +1100 Subject: [PATCH 3/3] Use MCUnreachableReturn() instead of abort() --- lcidlc/src/Parser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lcidlc/src/Parser.cpp b/lcidlc/src/Parser.cpp index 03c3fb58329..0dc4e58becb 100644 --- a/lcidlc/src/Parser.cpp +++ b/lcidlc/src/Parser.cpp @@ -144,7 +144,7 @@ static bool ParserReport(ParserRef self, Position p_where, ParserError p_error, } break; case kParserErrorNone: - abort(); + MCUnreachableReturn(false); break; }