Pārlūkot izejas kodu

Initial macOS changes

Many changes are related to fixing warnings
Brian Fiete 5 gadi atpakaļ
vecāks
revīzija
22ec4a86b8
52 mainītis faili ar 2868 papildinājumiem un 263 dzēšanām
  1. BIN
      .DS_Store
  2. 1 0
      BeefBoot/BootApp.cpp
  3. 34 12
      BeefBoot/CMakeLists.txt
  4. 52 17
      BeefRT/CMakeLists.txt
  5. 1 1
      BeefRT/dbg/DbgInternal.cpp
  6. 6 0
      BeefRT/rt/Chars.cpp
  7. 2 1
      BeefRT/rt/Internal.cpp
  8. BIN
      BeefySysLib/.DS_Store
  9. 32 11
      BeefySysLib/CMakeLists.txt
  10. 3 0
      BeefySysLib/Common.cpp
  11. 1 1
      BeefySysLib/DataStream.cpp
  12. 8 8
      BeefySysLib/HeadlessApp.h
  13. 5 5
      BeefySysLib/img/BFIData.cpp
  14. 1 1
      BeefySysLib/img/ImageData.cpp
  15. 3 3
      BeefySysLib/img/ImgEffects.cpp
  16. 8 8
      BeefySysLib/img/ImgEffects.h
  17. 2 2
      BeefySysLib/img/PSDReader.cpp
  18. 2147 0
      BeefySysLib/platform/darwin/DarwinCommon.cpp
  19. 217 1
      BeefySysLib/platform/darwin/DarwinCommon.h
  20. 4 2
      BeefySysLib/platform/darwin/PlatformApp.h
  21. 7 7
      BeefySysLib/platform/linux/LinuxCommon.cpp
  22. 8 2
      BeefySysLib/platform/osx/BFPlatform.h
  23. 15 0
      BeefySysLib/platform/sdl/SdlBFApp.cpp
  24. 4 1
      BeefySysLib/platform/sdl/SdlBFApp.h
  25. 16 1
      BeefySysLib/util/Array.h
  26. 8 0
      BeefySysLib/util/BeefPerf.cpp
  27. 1 1
      BeefySysLib/util/Deque.h
  28. 1 1
      BeefySysLib/util/PolySpline.cpp
  29. 1 1
      BeefySysLib/util/SizedArray.h
  30. 1 1
      BeefySysLib/util/String.cpp
  31. 32 11
      IDEHelper/CMakeLists.txt
  32. 2 0
      IDEHelper/Compiler/BfAst.cpp
  33. 2 0
      IDEHelper/Compiler/BfAst.h
  34. 2 2
      IDEHelper/Compiler/BfAutoComplete.cpp
  35. 1 1
      IDEHelper/Compiler/BfCompiler.cpp
  36. 1 1
      IDEHelper/Compiler/BfDefBuilder.cpp
  37. 10 1
      IDEHelper/Compiler/BfExprEvaluator.cpp
  38. 36 28
      IDEHelper/Compiler/BfIRBuilder.cpp
  39. 5 0
      IDEHelper/Compiler/BfIRCodeGen.cpp
  40. 7 0
      IDEHelper/Compiler/BfMangler.cpp
  41. 8 3
      IDEHelper/Compiler/BfModule.cpp
  42. 1 1
      IDEHelper/Compiler/BfModule.h
  43. 59 33
      IDEHelper/Compiler/BfModuleTypeUtils.cpp
  44. 28 23
      IDEHelper/Compiler/BfParser.cpp
  45. 1 1
      IDEHelper/Compiler/BfPrinter.h
  46. 23 17
      IDEHelper/Compiler/BfReducer.cpp
  47. 17 17
      IDEHelper/Compiler/BfResolvedTypeUtils.h
  48. 1 1
      IDEHelper/Compiler/BfSourceClassifier.cpp
  49. 1 0
      IDEHelper/Compiler/BfSystem.cpp
  50. 26 28
      IDEHelper/LinuxDebugger.cpp
  51. 16 7
      bin/build.sh
  52. BIN
      extern/.DS_Store

BIN
.DS_Store


+ 1 - 0
BeefBoot/BootApp.cpp

@@ -199,6 +199,7 @@ void BootApp::OutputLine(const String& text, OutputPri outputPri)
 		if (mVerbosity < Verbosity_Minimal)
 			return;
 		break;
+	default: break;
 	}
 
 	if (outputPri == OutputPri_Warning)

+ 34 - 12
BeefBoot/CMakeLists.txt

@@ -32,17 +32,33 @@ add_definitions(
    -DBFSYSLIB_DYNAMIC
 )
 
-include_directories(
-  .
-  ../BeefySysLib/
-  ../BeefySysLib/platform/linux
-  ../BeefySysLib/third_party
-  ../BeefySysLib/third_party/freetype/include
-  ../  
-  ../extern/llvm-project_8_0_0/llvm/include  
-  ../extern/llvm-project_8_0_0/llvm/lib/Target
-  ../IDEHelper
-)
+if (${APPLE})
+  include_directories(
+    .
+    ../
+    ../BeefySysLib/    
+    ../BeefySysLib/third_party
+    ../BeefySysLib/third_party/freetype/include    
+    ../extern/llvm-project_8_0_0/llvm/include  
+    ../extern/llvm-project_8_0_0/llvm/lib/Target
+    ../IDEHelper
+
+    ../BeefySysLib/platform/osx
+  )
+else()
+  include_directories(
+    .
+    ../
+    ../BeefySysLib/    
+    ../BeefySysLib/third_party
+    ../BeefySysLib/third_party/freetype/include    
+    ../extern/llvm-project_8_0_0/llvm/include  
+    ../extern/llvm-project_8_0_0/llvm/lib/Target
+    ../IDEHelper
+
+    ../BeefySysLib/platform/linux    
+  )
+endif()
 
 ############## Artefacts Output #################
 # Defines outputs , depending Debug or Release. #
@@ -112,11 +128,17 @@ add_executable(${PROJECT_NAME}
    ${SRC_FILES}
 )
 
+if (${APPLE})
+    set(TARGET_LIBS_OS "")
+else()
+    set(TARGET_LIBS_OS "tinfo")
+endif()
+
 # Link with other dependencies.
 if(MSVC)
    target_link_libraries(${PROJECT_NAME} BeefySysLib IDEHelper kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib)
 else()
-    target_link_libraries(${PROJECT_NAME} BeefySysLib IDEHelper tinfo
+    target_link_libraries(${PROJECT_NAME} BeefySysLib IDEHelper ${TARGET_LIBS_OS}
         #${LLVM_LIB}/libLLVMMC.a
         )    
 endif()

+ 52 - 17
BeefRT/CMakeLists.txt

@@ -35,19 +35,37 @@ add_definitions(
    -DBFRTMERGED
 )
 
-include_directories(
-  .
-  ../BeefySysLib/
-  ../BeefySysLib/platform/linux
-  ../BeefySysLib/third_party
-  ../BeefySysLib/third_party/freetype/include
-  ../BeefySysLib/third_party/libffi/x86_64-unknown-linux-gnu/include
-  ../  
-  ../extern
-  ../extern/llvm/include  
-  ../extern/llvm_linux/include
-  ../extern/llvm/lib/Target
-)
+if (${APPLE})
+  include_directories(
+    .
+    ../BeefySysLib/  
+    ../BeefySysLib/third_party
+    ../BeefySysLib/third_party/freetype/include
+    ../BeefySysLib/third_party/libffi/x86_64-apple-darwin12.5.0/include
+    ../  
+    ../extern
+    ../extern/llvm/include  
+    ../extern/llvm_linux/include
+    ../extern/llvm/lib/Target
+
+    ../BeefySysLib/platform/osx
+  )
+else()
+  include_directories(
+    .
+    ../BeefySysLib/  
+    ../BeefySysLib/third_party
+    ../BeefySysLib/third_party/freetype/include
+    ../BeefySysLib/third_party/libffi/x86_64-unknown-linux-gnu/include
+    ../  
+    ../extern
+    ../extern/llvm/include  
+    ../extern/llvm_linux/include
+    ../extern/llvm/lib/Target
+
+    ../BeefySysLib/platform/linux
+  )
+endif()
 
 ############## Artefacts Output #################
 # Defines outputs , depending Debug or Release. #
@@ -117,21 +135,38 @@ file(GLOB SRC_FILES
     ../BeefySysLib/util/BeefPerf.cpp
     ../BeefySysLib/util/String.cpp
     ../BeefySysLib/util/UTF8.cpp
-    ../BeefySysLib/third_party/utf8proc/utf8proc.c
-    ../BeefySysLib/platform/linux/BFPlatform.cpp
-    ../BeefySysLib/platform/linux/LinuxCommon.cpp
+    ../BeefySysLib/third_party/utf8proc/utf8proc.c    
 )
 
+if (${APPLE})
+    file(GLOB SRC_FILES_OS
+        ../BeefySysLib/platform/darwin/BFPlatform.cpp
+        ../BeefySysLib/platform/darwin/DarwinCommon.cpp
+    )
+else()
+    file(GLOB SRC_FILES_OS
+        ../BeefySysLib/platform/linux/BFPlatform.cpp
+        ../BeefySysLib/platform/linux/LinuxCommon.cpp
+    )
+endif()
+
 # Add library to build.
 add_library(${PROJECT_NAME} SHARED
    ${SRC_FILES}
+   ${SRC_FILES_OS}
 )
 
+if (${APPLE})
+    set(TARGET_LIBS_OS "")
+else()
+    set(TARGET_LIBS_OS "backtrace")
+endif()
+
 # Link with other dependencies.
 if(MSVC)
   target_link_libraries(${PROJECT_NAME} BeefySysLib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib LLVMX86Disassembler.lib LLVMMCDisassembler.lib LLVMSupport.lib LLVMX86Info.lib LLVMX86Utils.lib LLVMX86AsmPrinter.lib LLVMX86Desc.lib %(AdditionalDependencies) LLVMMC.lib LLVMObject.lib LLVMCore.lib LLVMBitReader.lib LLVMAsmParser.lib LLVMMCParser.lib LLVMCodeGen.lib LLVMTarget.lib LLVMX86CodeGen.lib LLVMScalarOpts.lib LLVMInstCombine.lib LLVMSelectionDAG.lib LLVMProfileData.lib LLVMTransformUtils.lib LLVMAnalysis.lib LLVMX86AsmParser.lib LLVMAsmPrinter.lib LLVMBitWriter.lib LLVMVectorize.lib LLVMipo.lib LLVMInstrumentation.lib LLVMDebugInfoDWARF.lib LLVMDebugInfoPDB.lib LLVMDebugInfoCodeView.lib LLVMGlobalISel.lib LLVMBinaryFormat.lib libcurl_a.lib)
 else()
   set(LLVM_LIB "${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux/lib")
-  target_link_libraries(${PROJECT_NAME} BeefySysLib pthread dl backtrace ffi 
+  target_link_libraries(${PROJECT_NAME} BeefySysLib pthread dl ffi ${TARGET_LIBS_OS}
   )
 endif()

+ 1 - 1
BeefRT/dbg/DbgInternal.cpp

@@ -2,7 +2,7 @@
 #define HEAPHOOK
 
 #include <stdio.h>
-#include <malloc.h>
+//#include <malloc.h>
 #include <stdlib.h>
 #include <string.h>
 

+ 6 - 0
BeefRT/rt/Chars.cpp

@@ -80,6 +80,7 @@ bool bf::System::Char32::get__IsLetterOrDigit(char32_t c)
 	case UTF8PROC_CATEGORY_ND:
 	case UTF8PROC_CATEGORY_NL:
 	case UTF8PROC_CATEGORY_NO: return true;
+	default: break;
 	}
 	return false;
 }
@@ -94,6 +95,7 @@ bool bf::System::Char32::get__IsLetter(char32_t c)
 	case UTF8PROC_CATEGORY_LT:
 	case UTF8PROC_CATEGORY_LM:
 	case UTF8PROC_CATEGORY_LO: return true;
+	default: break;
 	}
 	return false;
 }
@@ -106,6 +108,7 @@ bool bf::System::Char32::get__IsNumber(char32_t c)
 	case UTF8PROC_CATEGORY_ND:
 	case UTF8PROC_CATEGORY_NL:
 	case UTF8PROC_CATEGORY_NO: return true;
+	default: break;
 	}
 	return false;
 }
@@ -150,6 +153,7 @@ bool bf::System::Char16::get__IsLetterOrDigit(char16_t c)
 	case UTF8PROC_CATEGORY_ND:
 	case UTF8PROC_CATEGORY_NL:
 	case UTF8PROC_CATEGORY_NO: return true;
+	default: break;
 	}
 	return false;
 }
@@ -164,6 +168,7 @@ bool bf::System::Char16::get__IsLetter(char16_t c)
 	case UTF8PROC_CATEGORY_LT:
 	case UTF8PROC_CATEGORY_LM:
 	case UTF8PROC_CATEGORY_LO: return true;
+	default: break;
 	}
 	return false;
 }
@@ -176,6 +181,7 @@ bool bf::System::Char16::get__IsNumber(char16_t c)
 	case UTF8PROC_CATEGORY_ND:
 	case UTF8PROC_CATEGORY_NL:
 	case UTF8PROC_CATEGORY_NO: return true;
+	default: break;
 	}
 	return false;
 }

+ 2 - 1
BeefRT/rt/Internal.cpp

@@ -7,7 +7,7 @@
 #include <stdio.h>
 
 //#include <crtdefs.h>
-#include <malloc.h>
+//#include <malloc.h>
 #include <stdlib.h>
 #include <string.h>
 //#include <intrin.h>
@@ -453,6 +453,7 @@ void* Internal::VirtualAlloc(intptr size, bool canExecute, bool canWrite)
     return ptr;
 #else
     BF_FATAL("Not supported");
+    return NULL;
 #endif
 }
 

BIN
BeefySysLib/.DS_Store


+ 32 - 11
BeefySysLib/CMakeLists.txt

@@ -34,13 +34,24 @@ add_definitions(
    -DBP_DYNAMIC
 )
 
-include_directories(
-  .
-  platform/linux
-  third_party
-  third_party/freetype/include
-  ../extern
-)
+if (${APPLE})
+    include_directories(
+      .
+      platform/osx
+      platform/darwin
+      third_party
+      third_party/freetype/include
+      ../extern
+    )
+else()
+    include_directories(
+      .
+      platform/linux
+      third_party
+      third_party/freetype/include
+      ../extern
+    )
+endif()
 
 ############## Artefacts Output #################
 # Defines outputs , depending Debug or Release. #
@@ -105,10 +116,7 @@ file(GLOB SRC_FILES
     HeadlessApp.cpp
     MemStream.cpp      
     ResLib.cpp    
-    Startup.cpp
-
-    platform/linux/BFPlatform.cpp
-    platform/linux/LinuxCommon.cpp
+    Startup.cpp    
 
     fbx/FBXReader.cpp
     gfx/DrawLayer.cpp
@@ -284,9 +292,22 @@ file(GLOB SRC_FILES
     util/Vector.cpp
 )
 
+if (${APPLE})
+    file(GLOB SRC_FILES_OS
+        platform/darwin/BFPlatform.cpp
+        platform/darwin/DarwinCommon.cpp
+    )
+else()
+    file(GLOB SRC_FILES_OS
+        platform/linux/BFPlatform.cpp
+        platform/linux/LinuxCommon.cpp
+    )
+endif()
+
 # Add library to build.
 add_library(${PROJECT_NAME} SHARED
    ${SRC_FILES}
+   ${SRC_FILES_OS}
 )
 
 # Link with other dependencies.

+ 3 - 0
BeefySysLib/Common.cpp

@@ -238,6 +238,9 @@ String Beefy::SlashString(const StringImpl& str, bool utf8decode, bool utf8encod
 						case UTF8PROC_CATEGORY_CF:
 						case UTF8PROC_CATEGORY_CO:
 							wantHex = true;
+							break;
+						default:
+							break;
 						}
 
 						if (wantHex)

+ 1 - 1
BeefySysLib/DataStream.cpp

@@ -212,7 +212,7 @@ void DataStream::Write(DataStream& refStream)
 	refStream.SetPos(0);
 	refStream.Read(data, size);
 	Write(data, size);
-	delete data;
+	delete [] data;
 }
 
 void DataStream::WriteSNZ(const StringImpl& val)

+ 8 - 8
BeefySysLib/HeadlessApp.h

@@ -13,17 +13,17 @@ public:
 
 	virtual void			PhysSetCursor() override { }
 
-	virtual void			GetDesktopResolution(int& width, int& height) { }
-	virtual void			GetWorkspaceRect(int& x, int& y, int& width, int& height) {}
+	virtual void			GetDesktopResolution(int& width, int& height) override { }
+	virtual void			GetWorkspaceRect(int& x, int& y, int& width, int& height) override {}
 
-	virtual BFWindow*		CreateNewWindow(BFWindow* parent, const StringImpl& title, int x, int y, int width, int height, int windowFlags) { return NULL; }
-	virtual DrawLayer*		CreateDrawLayer(BFWindow* window) { return NULL; }
+	virtual BFWindow*		CreateNewWindow(BFWindow* parent, const StringImpl& title, int x, int y, int width, int height, int windowFlags) override { return NULL; }
+	virtual DrawLayer*		CreateDrawLayer(BFWindow* window) override { return NULL; }
 
-	virtual void*			GetClipboardData(const StringImpl& format, int* size) { return NULL; }
-	virtual void			ReleaseClipboardData(void* ptr) { }
-	virtual void			SetClipboardData(const StringImpl& format, const void* ptr, int size, bool resetClipboard) { }
+	virtual void*			GetClipboardData(const StringImpl& format, int* size) override { return NULL; }
+	virtual void			ReleaseClipboardData(void* ptr) override { }
+	virtual void			SetClipboardData(const StringImpl& format, const void* ptr, int size, bool resetClipboard) override { }
 
-	virtual BFSysBitmap*	LoadSysBitmap(const wchar_t* fileName) { return NULL; }
+	virtual BFSysBitmap*	LoadSysBitmap(const wchar_t* fileName) override { return NULL; }
 	
 };
 

+ 5 - 5
BeefySysLib/img/BFIData.cpp

@@ -488,7 +488,7 @@ void FFTShift1D(BFComplex* array, int size, int pitch, int dir)
 	for (int i = 0; i < size; i++)
 		array[i * pitch] = prev[((i + dir) % size)];
 
-	delete prev;
+	delete [] prev;
 }
 
 static void FFTShift2D(BFComplex* data, int cols, int rows)
@@ -543,7 +543,7 @@ static void FFTConvert(ImageData* source)
 		source->mBits[i] = 0xFF000000 | val | (val << 8) | (val << 16);
 	}
 
-	delete fFTLog;
+	delete [] fFTLog;
 	delete [] nums;
 }
 
@@ -563,7 +563,7 @@ void DCT_1D(double* array, int size, int pitch)
 		array[idxOut*pitch] = 0.5 * scale * val;
 	}
 
-	delete prev;
+	delete [] prev;
 }
 
 void IDCT_1D(double* array, int size, int pitch)
@@ -583,7 +583,7 @@ void IDCT_1D(double* array, int size, int pitch)
 		array[idxOut*pitch] = 0.5 * val;
 	}
 
-	delete prev;
+	delete [] prev;
 }
 
 const int DCT_1D_I_TABLE[64] = 
@@ -619,7 +619,7 @@ void DCT_1D_I(int* array, int size, int pitch)
 
 	}
 
-	delete prev;
+	delete [] prev;
 }
 
 const int IDCT_1D_I_TABLE[64] = 

+ 1 - 1
BeefySysLib/img/ImageData.cpp

@@ -85,7 +85,7 @@ bool ImageData::LoadFromFile(const StringImpl& path)
 	int size = 0;
 	uint8* aData = LoadBinaryData(path, &size);
 	if (aData == NULL)
-		return NULL;
+		return false;
 	SetSrcData(aData, size);
 	bool result = ReadData();
 	if (mKeepSrcDataValid)

+ 3 - 3
BeefySysLib/img/ImgEffects.cpp

@@ -441,7 +441,7 @@ void SoftBlur(uint32* data, int w, int h, float radius, uint32 defaultValue)
 			BoxBlur(tempBuffer, data, h, w, d, defaultValue);
 		}
 	}	
-	delete tempBuffer;
+	delete [] tempBuffer;
 }
 
 static int gAlphaCheckOfs [][2] =
@@ -1705,7 +1705,7 @@ void ChokedPixelTransform(ImageData* src, ImageData* dest, float radius, float c
 		}	
 	}
 
-	delete tempBuffer;
+	delete [] tempBuffer;
 }
 
 void ImageOuterGlowEffect::Apply(PSDLayerInfo* layerInfo, ImageData* imageData, ImageData* destImageData)
@@ -2251,7 +2251,7 @@ void ImageBevelEffect::Apply(int pass, int style, PSDLayerInfo* layerInfo, Image
 		}
 	}
 
-	delete normalMap;
+	delete [] normalMap;
 }
 
 void ImageBevelEffect::Apply(ImageEffectCtx* ctx)

+ 8 - 8
BeefySysLib/img/ImgEffects.h

@@ -152,7 +152,7 @@ public:
 public:
 	virtual void			Init() override;
 	virtual void			CreateContourAndGradientData();	
-	virtual int				GetNeededBorderSize();
+	virtual int				GetNeededBorderSize() override;
 };
 
 class ImageOuterGlowEffect : public ImageGlowEffect
@@ -266,9 +266,9 @@ public:
 	void					Init() override;
 	void					Apply(PSDLayerInfo* layerInfo, ImageData* imageData, ImageData* destImageData) override;	
 	virtual void			Apply(ImageEffectCtx* ctx) override;
-	virtual int				GetMixType();
+	virtual int				GetMixType() override;
 	void					Apply(int pass, int style, PSDLayerInfo* layerInfo, ImageData* imageData, ImageData* hiliteImage, ImageData* shadowImage);	
-	virtual int				GetNeededBorderSize();	
+	virtual int				GetNeededBorderSize() override;
 };
 
 typedef std::vector<BaseImageEffect*> ImageEffectVector;
@@ -286,10 +286,10 @@ public:
 	bool					mInvert;
 
 public:
-	virtual void			Init();
+	virtual void			Init() override;
 	virtual void			Apply(PSDLayerInfo* layerInfo, ImageData* imageData, ImageData* destImageData) override;
-	virtual int				GetMixType(); // Default:Interior
-	virtual int				GetNeededBorderSize();
+	virtual int				GetMixType() override; // Default:Interior
+	virtual int				GetNeededBorderSize() override;
 };
 
 class ImageColorOverlayEffect : public BaseImageEffect
@@ -334,8 +334,8 @@ public:
 public:
 	virtual void			Apply(PSDLayerInfo* layerInfo, ImageData* imageData, ImageData* destImageData) override;
 	virtual void			Apply(ImageEffectCtx* ctx) override;
-	virtual int				GetMixType(); // Default:Interior
-	virtual int				GetNeededBorderSize();
+	virtual int				GetMixType() override; // Default:Interior
+	virtual int				GetNeededBorderSize() override;
 	virtual bool			NeedsOrigBits(ImageEffects* effects) override;
 };
 

+ 2 - 2
BeefySysLib/img/PSDReader.cpp

@@ -1907,12 +1907,12 @@ bool PSDLayerInfo::ReadData()
 					}
 				}
 
-				delete rowData;
+				delete [] rowData;
 			}
 		}				
 	}
 
-	delete rowLengths;
+	delete [] rowLengths;
 
 	if (((mLayerMask != NULL) || (mVectorMask != NULL)) && (!mLayerMaskHidesEffects))
 		ApplyMask(this);

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 2147 - 0
BeefySysLib/platform/darwin/DarwinCommon.cpp


+ 217 - 1
BeefySysLib/platform/darwin/DarwinCommon.h

@@ -8,6 +8,220 @@
 
 #define BOOST_DETAIL_NO_CONTAINER_FWD
 
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <pthread.h>
+#include <time.h>
+#include <assert.h>
+#include <sys/time.h>
+//#include <libkern/OSAtomic.h>
+#include <cstdlib>
+#include <unistd.h>
+#include <wchar.h>
+#include <math.h>
+#include <stdarg.h>
+#include <string.h>
+#include <pthread.h>
+#include <wctype.h>
+#include <stddef.h>
+#include <mach/error.h>
+
+//#define errno (*__error())
+
+//#define offsetof(type, member)  __builtin_offsetof (type, member)
+
+extern "C"
+{
+//#define FFI_BUILDING
+//#include "third_party/libffi/x86_64-apple-darwin12.5.0/include/ffi.h"
+}
+
+#define BF_ENDIAN_LITTLE
+
+#define _NOEXCEPT noexcept
+#define NTAPI
+
+#define FFI_STDCALL FFI_DEFAULT_ABI
+#define FFI_THISCALL FFI_DEFAULT_ABI
+#define FFI_FASTCALL FFI_DEFAULT_ABI
+
+#define INVALID_SOCKET -1
+
+typedef uint64_t uint64;
+typedef uint32_t uint32;
+typedef uint16_t uint16;
+typedef uint8_t uint8;
+typedef int64_t int64;
+typedef int32_t int32;
+typedef int16_t int16;
+typedef int8_t int8;
+typedef unsigned int uint;
+
+#define BF_PLATFORM_LINUX
+#define BF_PLATFORM_NAME "BF_PLATFORM_LINUX"
+//#define BF_PLATFORM_SDL
+
+#define NOP
+//#define BF_NOTHROW throw ()
+//#define BF_NOTHROW noexcept
+#define BF_NOTHROW
+
+#ifdef BF64
+typedef int64 intptr;
+typedef uint64 uintptr;
+#else
+typedef int32 intptr;
+typedef uint32 uintptr;
+#endif
+
+typedef wchar_t* BSTR;
+typedef int HRESULT;
+typedef uint8 BYTE;
+typedef uint16 WORD;
+typedef uint32 DWORD;
+typedef int32 LONG;
+
+typedef pthread_key_t BFTlsKey;
+typedef pthread_t BF_THREADID;
+typedef pthread_t BF_THREADHANDLE;
+#define BF_TLS_DECLSPEC thread_local
+
+//:int64 abs(int64 val);
+
+#define _stricmp stricmp
+#define strnicmp strncasecmp
+
+struct IID
+{
+    unsigned long  Data1;
+    unsigned short Data2;
+    unsigned short Data3;
+    unsigned char  Data4[ 8 ];
+};
+
+typedef void* HANDLE;
+typedef void* HMODULE;
+
+// We only need the stdcall attribute for x32?
+//#define BFSTDCALL __attribute__((stdcall))
+
+//#include "../notwin/NotWin.h"
+
+#ifdef DEBUG
+#define _DEBUG
+#endif
+
+#define NOT_IMPL throw "Unimplemented";
+
+//ARM
+
+#if defined(__x86_64__) || defined(__i386__)
+#define BF_FULL_MEMORY_FENCE() __asm__ __volatile__("mfence": : :"memory")
+#define BF_SPINWAIT_NOP() __asm__ volatile ("pause\n" : : : "memory" );
+#else
+#define BF_FULL_MEMORY_FENCE() __sync_synchronize()
+#define BF_SPINWAIT_NOP() ((void) 0)
+#endif
+
+#define BF_COMPILER_FENCE() __asm__ __volatile__("": : :"memory")
+#define BF_THREAD_YIELD() sched_yield()
+
+#if defined _DEBUG || defined BF_DEBUG_ASSERTS
+#define BF_ASSERT(_Expression) (void)( (!!(_Expression)) || (Beefy::BFFatalError(#_Expression, __FILE__, __LINE__), 0) )
+#else
+#define BF_ASSERT(_Expression) (void)(0)
+#endif
+
+#define BF_ASSERT_REL(_Expression) (void)( (!!(_Expression)) || (Beefy::BFFatalError(#_Expression, __FILE__, __LINE__), 0) )
+#define BF_FATAL(msg) (void) ((Beefy::BFFatalError(msg, __FILE__, __LINE__), 0) )
+
+#if defined _DEBUG || defined BF_DEBUG_ASSERTS
+#define BF_DBG_FATAL(msg) (void) ((Beefy::BFFatalError(msg, __FILE__, __LINE__), 0) )
+#else
+#define BF_DBG_FATAL(msg) 
+#endif
+
+#define BF_NOINLINE __attribute__ ((noinline))
+#define BF_NAKED
+
+#define stricmp strcasecmp
+#define _alloca alloca
+
+#define DIR_SEP_CHAR '/'
+#define DIR_SEP_CHAR_ALT '\\'
+
+static char* itoa(int value, char* str, int base)
+{
+    if (base == 16)
+        sprintf(str, "%X", value);
+    else
+        sprintf(str, "%d", value);
+    return str;
+}
+
+inline uint32 InterlockedCompareExchange(volatile uint32* dest, uint32 exch, uint32 comp)
+{
+    return __sync_val_compare_and_swap(dest, comp, exch);    
+}
+
+inline uint64 InterlockedCompareExchange64(volatile int64* dest, int64 exch, int64 comp)
+{
+    return __sync_val_compare_and_swap(dest, comp, exch);
+}
+
+inline void* InterlockedCompareExchangePointer(void* volatile* dest, void* exch, void* comp)
+{
+    return __sync_val_compare_and_swap(dest, comp, exch);
+}
+
+inline uint32 InterlockedExchange(volatile uint32* dest, uint32 val)
+{
+    return __sync_lock_test_and_set(dest, val);
+}
+
+inline uint64 InterlockedExchange64(volatile int64* dest, int64 val)
+{
+    return __sync_lock_test_and_set(dest, val);
+}
+
+inline uint32 InterlockedExchangeAdd(volatile uint32* dest, uint32 val)
+{
+    return __sync_add_and_fetch(dest, val);
+}
+
+inline int32 InterlockedIncrement(volatile uint32* val)
+{
+    return __sync_add_and_fetch(val, 1);
+}
+
+inline int64 InterlockedIncrement64(volatile int64* val)
+{
+    return __sync_add_and_fetch(val, 1);
+}
+
+inline int32 InterlockedDecrement(volatile uint32* val)
+{
+    return __sync_add_and_fetch(val, -1);
+}
+
+inline int64 InterlockedDecrement64(volatile int64* val)
+{
+    return __sync_add_and_fetch(val, -1);
+}
+
+#if 0
+
+#pragma once
+
+#ifdef __LP64__
+#define BF64
+#else
+#define BF32
+#endif
+
+#define BOOST_DETAIL_NO_CONTAINER_FWD
+
 #include <stdint.h>
 #include <stdlib.h>
 #include <pthread.h>
@@ -64,7 +278,7 @@ typedef int32 LONG;
 typedef pthread_key_t BFTlsKey;
 typedef pthread_t BF_THREADID;
 
-int64 abs(int64 val);
+int64 abs(int64 val) noexcept;
 
 struct IID
 {
@@ -320,3 +534,5 @@ inline int64 InterlockedDecrement64(volatile int64* val)
 {
     return OSAtomicDecrement64Barrier(val);
 }
+
+#endif

+ 4 - 2
BeefySysLib/platform/darwin/PlatformApp.h

@@ -1,9 +1,11 @@
 #pragma once
 
-#include "../sdl/SdlBFApp.h"
+//include "../sdl/SdlBFApp.h"
+#include "../../HeadlessApp.h"
 
 NS_BF_BEGIN;
 
-typedef SdlBFApp PlatformBFApp;
+//typedef SdlBFApp PlatformBFApp;
+typedef HeadlessApp PlatformBFApp;
 
 NS_BF_END;

+ 7 - 7
BeefySysLib/platform/linux/LinuxCommon.cpp

@@ -1233,7 +1233,7 @@ BFP_EXPORT void BFP_CALLTYPE BfpThread_Sleep(int sleepMS)
 
 BFP_EXPORT bool BFP_CALLTYPE BfpThread_Yield()
 {
-    sched_yield();
+    return sched_yield() == 0;
 }
 
 struct BfpCritSect
@@ -1814,24 +1814,24 @@ BFP_EXPORT void BFP_CALLTYPE BfpFile_Flush(BfpFile* file)
     ::fsync(file->mHandle);
 }
 
-BFP_EXPORT intptr BFP_CALLTYPE BfpFile_GetFileSize(BfpFile* file)
+BFP_EXPORT int64 BFP_CALLTYPE BfpFile_GetFileSize(BfpFile* file)
 {
     int64 oldPos = (int64)lseek64(file->mHandle, 0, SEEK_CUR);
     int64 size = (int64)lseek64(file->mHandle, 0, SEEK_END);
     lseek64(file->mHandle, oldPos, SEEK_SET);
-    return (intptr)size;
+    return (int64)size;
 }
 
-BFP_EXPORT intptr BFP_CALLTYPE BfpFile_Seek(BfpFile* file, intptr offset, BfpFileSeekKind seekKind)
+BFP_EXPORT int64 BFP_CALLTYPE BfpFile_Seek(BfpFile* file, int64 offset, BfpFileSeekKind seekKind)
 {
     int whence;
-    if (seekKind = BfpFileSeekKind_Absolute)        
+    if (seekKind == BfpFileSeekKind_Absolute)        
         whence = SEEK_SET;
-    else if (seekKind = BfpFileSeekKind_Relative)
+    else if (seekKind == BfpFileSeekKind_Relative)
         whence = SEEK_CUR;
     else
         whence = SEEK_END;
-    lseek64(file->mHandle, offset, whence);
+    return seek64(file->mHandle, offset, whence);
 }
 
 BFP_EXPORT void BFP_CALLTYPE BfpFile_Truncate(BfpFile* file)

+ 8 - 2
BeefySysLib/platform/osx/BFPlatform.h

@@ -1,13 +1,16 @@
 #pragma once
 
-#define BFSTDCALL __stdcall
+#define BFSTDCALL
 
 #include "../darwin/DarwinCommon.h"
+#include <string>
 
 #define BF_PLATFORM_OSX
 
+#define BF_IMPORT extern "C"
+
 #ifdef BFSYSLIB_DYNAMIC
-#define BF_EXPORT extern "C" __declspec(dllexport)
+#define BF_EXPORT extern "C"
 #define BF_CALLTYPE
 #else
 #define BF_EXPORT extern "C"
@@ -21,3 +24,6 @@
 #define BF_REGISTER_COUNT 15
 #endif
 
+#define BF_DEBUG_BREAK()
+
+#include "../PlatformInterface.h"

+ 15 - 0
BeefySysLib/platform/sdl/SdlBFApp.cpp

@@ -711,3 +711,18 @@ DrawLayer* SdlBFApp::CreateDrawLayer(BFWindow* window)
 	}
 	return drawLayer;
 }
+
+
+void SdlBFApp::GetDesktopResolution(int& width, int& height) override
+{
+	width = 1024;
+	height = 768;
+}
+
+void SdlBFApp::GetWorkspaceRect(int& x, int& y, int& width, int& height) override
+{
+	x = 0;
+	y = 0;
+	width = 1024;
+	height = 768;
+}

+ 4 - 1
BeefySysLib/platform/sdl/SdlBFApp.h

@@ -2,6 +2,7 @@
 
 #include "BFApp.h"
 #include "BFWindow.h"
+#include <map>
 
 struct SDL_Window;
 
@@ -56,13 +57,15 @@ public:
 	virtual void			Run() override;
 
 	virtual BFWindow*		CreateNewWindow(BFWindow* parent, const StringImpl& title, int x, int y, int width, int height, int windowFlags) override;
-	virtual DrawLayer*		CreateDrawLayer(BFWindow* window);
+	virtual DrawLayer*		CreateDrawLayer(BFWindow* window) override;
 
 	virtual void*			GetClipboardData(const StringImpl& format, int* size) override;
 	virtual void			ReleaseClipboardData(void* ptr) override;
 	virtual void			SetClipboardData(const StringImpl& format, const void* ptr, int size, bool resetClipboard) override;
 
 	virtual BFSysBitmap*	LoadSysBitmap(const wchar_t* fileName) override;
+	virtual void            GetDesktopResolution(int& width, int& height) override;
+	virtual void            GetWorkspaceRect(int& x, int& y, int& width, int& height) override;
 };
 
 NS_BF_END;

+ 16 - 1
BeefySysLib/util/Array.h

@@ -137,6 +137,21 @@ public:
 		{
 			return mPtr < val2.mPtr;
 		}
+
+		bool operator>(const iterator& val2) const
+		{
+			return mPtr > val2.mPtr;
+		}
+
+		bool operator<=(const iterator& val2) const
+		{
+			return mPtr <= val2.mPtr;
+		}
+
+		bool operator>=(const iterator& val2) const
+		{
+			return mPtr >= val2.mPtr;
+		}
 	};
 
 	struct const_iterator
@@ -1041,7 +1056,7 @@ class Array : public ArrayImpl<T, TAlloc, std::is_pod<T>::value>
 public:
 	typedef ArrayImpl<T, TAlloc, std::is_pod<T>::value> _ArrayImpl;
 
-	using _ArrayImpl::ArrayImpl;
+	using ArrayImpl<T, TAlloc, std::is_pod<T>::value>::ArrayImpl;
 	using _ArrayImpl::operator=;
 	using _ArrayImpl::operator==;
 	using _ArrayImpl::operator!=;

+ 8 - 0
BeefySysLib/util/BeefPerf.cpp

@@ -17,6 +17,14 @@ typedef fd_set FD_SET;
 #define closesocket close
 #endif
 
+#ifdef BF_PLATFORM_OSX
+#include <sys/socket.h>
+#include <mach/error.h>
+#include <mach/mach.h>
+#include <cerrno>
+//#define errno (*__error())
+#endif
+
 //#include <rpcdce.h>
 
 #pragma comment(lib,"wsock32.lib")

+ 1 - 1
BeefySysLib/util/Deque.h

@@ -1049,7 +1049,7 @@ class Deque : public DequeImpl<T, TAlloc, std::is_pod<T>::value>
 public:
 	typedef DequeImpl<T, TAlloc, std::is_pod<T>::value> _DequeImpl;
 
-	using _DequeImpl::DequeImpl;
+	using DequeImpl<T, TAlloc, std::is_pod<T>::value>::DequeImpl;
 	using _DequeImpl::operator=;
 	using _DequeImpl::operator==;
 	using _DequeImpl::operator!=;

+ 1 - 1
BeefySysLib/util/PolySpline.cpp

@@ -44,7 +44,7 @@ void PolySpline2D::Calculate()
 	for (int i=0; i<n; i++)
 		mCoefs[i] = mat[i];
 
-	delete mat;	
+	delete [] mat;
 }
 
 float PolySpline2D::Evaluate(float x)

+ 1 - 1
BeefySysLib/util/SizedArray.h

@@ -834,7 +834,7 @@ public:
 	typename _Base::TStorage mInternalBuffer[TInternalSize - 1];
 
 public:
-	using _Base::SizedArrayImpl;
+	using SizedArrayImpl<T, TAlloc>::SizedArrayImpl;
 	using _Base::operator=;
 	using _Base::operator==;
 	using _Base::operator!=;

+ 1 - 1
BeefySysLib/util/String.cpp

@@ -723,7 +723,7 @@ bool StringImpl::HasMultibyteChars()
 {
 	auto ptr = GetPtr();
 	for (int i = 0; i < (int)mLength; i++)
-		if (ptr[i] >= 0x80)
+		if ((uint8)ptr[i] >= (uint8)0x80)
 			return true;
 	return false;
 }

+ 32 - 11
IDEHelper/CMakeLists.txt

@@ -33,16 +33,31 @@ add_definitions(
    -DBFSYSLIB_DYNAMIC
 )
 
-include_directories(
-  .
-  ../BeefySysLib/
-  ../BeefySysLib/platform/linux
-  ../BeefySysLib/third_party
-  ../BeefySysLib/third_party/freetype/include
-  ../  
-  ../extern/llvm-project_8_0_0/llvm/include  
-  ../extern/llvm-project_8_0_0/llvm/lib/Target
-)
+if (${APPLE})
+  include_directories(
+    .
+    ../
+    ../BeefySysLib/    
+    ../BeefySysLib/third_party
+    ../BeefySysLib/third_party/freetype/include    
+    ../extern/llvm-project_8_0_0/llvm/include  
+    ../extern/llvm-project_8_0_0/llvm/lib/Target
+
+    ../BeefySysLib/platform/osx
+  )
+else()
+  include_directories(
+    .
+    ../
+    ../BeefySysLib/    
+    ../BeefySysLib/third_party
+    ../BeefySysLib/third_party/freetype/include    
+    ../extern/llvm-project_8_0_0/llvm/include  
+    ../extern/llvm-project_8_0_0/llvm/lib/Target
+
+    ../BeefySysLib/platform/linux    
+  )
+endif()
 
 ############## Artefacts Output #################
 # Defines outputs , depending Debug or Release. #
@@ -161,11 +176,17 @@ add_library(${PROJECT_NAME} SHARED
    ${SRC_FILES}
 )
 
+if (${APPLE})
+    set(TARGET_LIBS_OS "ncurses")
+else()
+    set(TARGET_LIBS_OS "backtrace")
+endif()
+
 # Link with other dependencies.
 if(MSVC)
   target_link_libraries(${PROJECT_NAME} BeefySysLib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib LLVMX86Disassembler.lib LLVMMCDisassembler.lib LLVMSupport.lib LLVMX86Info.lib LLVMX86Utils.lib LLVMX86AsmPrinter.lib LLVMX86Desc.lib %(AdditionalDependencies) LLVMMC.lib LLVMObject.lib LLVMCore.lib LLVMBitReader.lib LLVMAsmParser.lib LLVMMCParser.lib LLVMCodeGen.lib LLVMTarget.lib LLVMX86CodeGen.lib LLVMScalarOpts.lib LLVMInstCombine.lib LLVMSelectionDAG.lib LLVMProfileData.lib LLVMTransformUtils.lib LLVMAnalysis.lib LLVMX86AsmParser.lib LLVMAsmPrinter.lib LLVMBitWriter.lib LLVMVectorize.lib LLVMipo.lib LLVMInstrumentation.lib LLVMDebugInfoDWARF.lib LLVMDebugInfoPDB.lib LLVMDebugInfoCodeView.lib LLVMGlobalISel.lib LLVMBinaryFormat.lib LLVMAggressiveInstCombine.lib libcurl_a.lib)
 else()
-  target_link_libraries(${PROJECT_NAME} BeefySysLib hunspell pthread dl backtrace
+  target_link_libraries(${PROJECT_NAME} BeefySysLib hunspell pthread dl ${TARGET_LIBS_OS}
     ${LLVM_LIB}/libLLVMCore.a
     ${LLVM_LIB}/libLLVMMC.a
     ${LLVM_LIB}/libLLVMMCParser.a

+ 2 - 0
IDEHelper/Compiler/BfAst.cpp

@@ -1506,6 +1506,8 @@ int Beefy::BfGetBinaryOpPrecendence(BfBinaryOp binOp)
 		return 2;
 	case BfBinaryOp_NullCoalesce:
 		return 1;
+	default:
+		break;
 	}
 
 	return 0;

+ 2 - 0
IDEHelper/Compiler/BfAst.h

@@ -655,6 +655,8 @@ public:
 		case BfTypedValueKind_ParamsSplat:
 		case BfTypedValueKind_Params:
 			return true;
+		default:
+			return false;
 		}
 
 		return false;

+ 2 - 2
IDEHelper/Compiler/BfAutoComplete.cpp

@@ -364,7 +364,7 @@ BfTypedValue BfAutoComplete::LookupTypeRefOrIdentifier(BfAstNode* node, bool* is
 	if (auto identifier = BfNodeDynCast<BfIdentifierNode>(node))
 	{				
 		BfExprEvaluator exprEvaluator(mModule);
-		auto identifierResult = exprEvaluator.LookupIdentifier(identifier, NULL);
+		auto identifierResult = exprEvaluator.LookupIdentifier(identifier, false, NULL);
 		if (!identifierResult)
 			identifierResult = exprEvaluator.GetResult();
 		if (identifierResult)
@@ -1435,7 +1435,7 @@ bool BfAutoComplete::CheckMemberReference(BfAstNode* target, BfAstNode* dotToken
 {
 	BfAttributedIdentifierNode* attrIdentifier = NULL;
 	bool isAutocompletingName = false;
-	if (attrIdentifier = BfNodeDynCast<BfAttributedIdentifierNode>(memberName))
+	if ((attrIdentifier = BfNodeDynCast<BfAttributedIdentifierNode>(memberName)))
 	{
 		memberName = attrIdentifier->mIdentifier;
 		if ((memberName == NULL) && (IsAutocompleteNode(attrIdentifier->mAttributes)))

+ 1 - 1
IDEHelper/Compiler/BfCompiler.cpp

@@ -1074,7 +1074,7 @@ void BfCompiler::CreateVData(BfVDataModule* bfModule)
 	
 	for (auto type : orderedTypes)
 	{			
-		if ((type == NULL) /*|| (type->IsUnspecializedType()*/)
+		if (type == NULL)
 			continue;
 
 		if (type->IsTemporary())

+ 1 - 1
IDEHelper/Compiler/BfDefBuilder.cpp

@@ -1840,7 +1840,7 @@ void BfDefBuilder::FinishTypeDef(bool wantsToString)
 	}	
 
 	bool isPayloadEnum = false;
-	if ((mCurTypeDef->mTypeCode == BfTypeCode_Enum) /*&& (mCurTypeDef->mGenericParams.size() == 0)*/)
+	if (mCurTypeDef->mTypeCode == BfTypeCode_Enum)
 	{
 		for (auto fieldDef : mCurTypeDef->mFields)
 		{

+ 10 - 1
IDEHelper/Compiler/BfExprEvaluator.cpp

@@ -42,6 +42,7 @@ static BfBinaryOp GetOppositeBinaryOp(BfBinaryOp origOp)
 		return BfBinaryOp_LessThanOrEqual;
 	case BfBinaryOp_GreaterThanOrEqual:
 		return BfBinaryOp_LessThan;
+	default: break;
 	}
 
 	return BfBinaryOp_None;
@@ -63,6 +64,7 @@ static BfBinaryOp GetFlippedBinaryOp(BfBinaryOp origOp)
 		return BfBinaryOp_LessThan;
 	case BfBinaryOp_GreaterThanOrEqual:
 		return BfBinaryOp_LessThanOrEqual;
+	default: break;
 	}
 
 	return BfBinaryOp_None;
@@ -7708,6 +7710,7 @@ bool BfExprEvaluator::LookupTypeProp(BfTypeOfExpression* typeOfExpr, BfIdentifie
 				case BfTypeCode_UInt64:
 					mResult = BfTypedValue(mModule->mBfIRBuilder->CreateConst(primType->mTypeDef->mTypeCode, isMin ? 0 : (uint64)0xFFFFFFFFFFFFFFFFLL), typeInstance);
 					return true;
+				default: break;
 				}
 			}
 		}
@@ -7754,6 +7757,7 @@ void BfExprEvaluator::DoTypeIntAttr(BfTypeReference* typeRef, BfToken token)
 	case BfToken_SizeOf: attrVal = type->mSize; break;
 	case BfToken_AlignOf: attrVal = type->mAlign; break;
 	case BfToken_StrideOf: attrVal = type->GetStride(); break;
+	default: break;
 	}
 
 	bool isUndefVal = false;
@@ -16481,6 +16485,7 @@ bool BfExprEvaluator::CheckConstCompare(BfBinaryOp binaryOp, BfAstNode* opToken,
 			if (rightConst->mInt64 < minValue)
 				constResult = 0;			
 			break;		
+		default: break;
 		}
 		return false;
 	}
@@ -16524,6 +16529,7 @@ bool BfExprEvaluator::CheckConstCompare(BfBinaryOp binaryOp, BfAstNode* opToken,
 			else if (rightConst->mInt64 <= minValue)
 				constResult = 1;
 			break;
+		default: break;
 		}
 	}
 	
@@ -16591,7 +16597,8 @@ void BfExprEvaluator::PerformBinaryOperation(BfAstNode* leftExpression, BfAstNod
 				}
 				else
 				{
-					mModule->Fail(StrFormat("Operator '??' cannot be applied to operands of type '%s' and '%s'",
+					// Note: Annoying trigraph split for '??'
+					mModule->Fail(StrFormat("Operator '?" "?' cannot be applied to operands of type '%s' and '%s'",
 						mModule->TypeToString(leftValue.mType).c_str(), mModule->TypeToString(rightValue.mType).c_str()), opToken);					
 					leftValue = mModule->GetDefaultTypedValue(rightValue.mType);
 				}
@@ -16971,6 +16978,7 @@ void BfExprEvaluator::PerformBinaryOperation(BfAstNode* leftExpression, BfAstNod
 						case BfBinaryOp_LessThanOrEqual:
 							mResult = BfTypedValue(mModule->mBfIRBuilder->CreateCmpLTE(mResult.mValue, zeroVal, true), boolType);
 							break;
+						default: break;
 						}
 					}
 
@@ -17653,6 +17661,7 @@ void BfExprEvaluator::Visit(BfBinaryOperatorExpression* binOpExpr)
 	case BfBinaryOp_Subtract: unaryOp = BfUnaryOp_Negate; break;
 	case BfBinaryOp_Multiply: unaryOp = BfUnaryOp_Dereference; break;
 	case BfBinaryOp_BitwiseAnd: unaryOp = BfUnaryOp_AddressOf; break;
+	default: break;
 	}
 
 	if (unaryOp != BfUnaryOp_None)

+ 36 - 28
IDEHelper/Compiler/BfIRBuilder.cpp

@@ -70,6 +70,7 @@ USING_NS_BF;
 	case BfTypeCode_Single: \
 	case BfTypeCode_Double: \
 		return CreateConst(constLHS->mTypeCode, OP(constLHS->mDouble, constRHS->mDouble)); break; \
+	default: break; \
 	} \
 	return CreateConst(constLHS->mTypeCode, val);
 
@@ -94,6 +95,7 @@ USING_NS_BF;
 	case BfTypeCode_Char32: val = OP(constLHS->mUInt32, constRHS->mUInt32); break; \
 	case BfTypeCode_Int64: val = OP(constLHS->mInt64, constRHS->mInt64); break; \
 	case BfTypeCode_UInt64: val = OP(constLHS->mUInt64, constRHS->mUInt64); break; \
+	default: break; \
 	} \
 	return CreateConst(constLHS->mTypeCode, val);
 
@@ -122,6 +124,7 @@ USING_NS_BF;
 	case BfTypeCode_Single: \
 	case BfTypeCode_Double: \
 		return CreateConst(constLHS->mTypeCode, constLHS->mDouble OP constRHS->mDouble); break; \
+	default: break; \
 	} \
 	return CreateConst(constLHS->mTypeCode, val);
 
@@ -143,6 +146,7 @@ USING_NS_BF;
 	case BfTypeCode_Char32: val = constLHS->mUInt32 OP constRHS->mUInt32; break; \
 	case BfTypeCode_Int64: val = constLHS->mInt64 OP constRHS->mInt64; break; \
 	case BfTypeCode_UInt64: val = constLHS->mUInt64 OP constRHS->mUInt64; break; \
+	default: break; \
 	} \
 	return CreateConst(constLHS->mTypeCode, val);
 
@@ -166,6 +170,7 @@ USING_NS_BF;
 	case BfTypeCode_Single: \
 	case BfTypeCode_Double: \
 		return CreateConst(constVal->mTypeCode, OP constVal->mDouble); break; \
+	default: break; \
 	} \
 	return CreateConst(constVal->mTypeCode, val);
 
@@ -195,6 +200,7 @@ USING_NS_BF;
 		case BfTypeCode_UInt64: val = constLHS->mUInt64 OP constRHS->mUInt64; break; \
 		case BfTypeCode_Single: val = constLHS->mDouble OP constRHS->mDouble; break; \
 		case BfTypeCode_Double: val = constLHS->mDouble OP constRHS->mDouble; break; \
+		default: break; \
 		} \
 		return CreateConst(BfTypeCode_Boolean, val ? (uint64)1 : (uint64)0); \
 	}
@@ -1481,54 +1487,54 @@ void BfIRBuilder::Write(const BfIRValue& irValue)
 		mStream.Write(BfIRParamType_Const);
 		mStream.Write((uint8)constant->mTypeCode);
 		
-		switch (constant->mTypeCode)
+		switch ((int)constant->mTypeCode)
 		{
-		case BfTypeCode_Single:
+		case (int)BfTypeCode_Single:
 			{
 				float f = (float)constant->mDouble;
 				mStream.Write(&f, sizeof(float));
 			}
 			break;
-		case BfTypeCode_Double:			
+		case (int)BfTypeCode_Double:			
 			{
 				mStream.Write(&constant->mDouble, sizeof(double));
 			}
 			break;
-		case BfTypeCode_Int8:
-		case BfTypeCode_UInt8:
-		case BfTypeCode_Int16:
-		case BfTypeCode_UInt16:
-		case BfTypeCode_Int32:
-		case BfTypeCode_UInt32:
-		case BfTypeCode_Int64:
-		case BfTypeCode_UInt64:
-		case BfTypeCode_IntPtr:
-		case BfTypeCode_UIntPtr:
-		case BfTypeCode_IntUnknown:
-		case BfTypeCode_UIntUnknown:
-		case BfTypeCode_Char8:
-		case BfTypeCode_Char16:
-		case BfTypeCode_Char32:			
+		case (int)BfTypeCode_Int8:
+		case (int)BfTypeCode_UInt8:
+		case (int)BfTypeCode_Int16:
+		case (int)BfTypeCode_UInt16:
+		case (int)BfTypeCode_Int32:
+		case (int)BfTypeCode_UInt32:
+		case (int)BfTypeCode_Int64:
+		case (int)BfTypeCode_UInt64:
+		case (int)BfTypeCode_IntPtr:
+		case (int)BfTypeCode_UIntPtr:
+		case (int)BfTypeCode_IntUnknown:
+		case (int)BfTypeCode_UIntUnknown:
+		case (int)BfTypeCode_Char8:
+		case (int)BfTypeCode_Char16:
+		case (int)BfTypeCode_Char32:			
 			{
 				WriteSLEB128(constant->mInt64);
 			}
 			break;
-		case BfTypeCode_Boolean:
+		case (int)BfTypeCode_Boolean:
 			{
 				Write(constant->mBool);
 			}
 			break;
-		case BfTypeCode_NullPtr:
+		case (int)BfTypeCode_NullPtr:
 			{
 				Write(constant->mIRType);
 			}
 			break;
-		case BfTypeCode_None:
+		case (int)BfTypeCode_None:
 			{
 				// No param needed
 			}
 			break;
-		case BfConstType_GlobalVar:
+		case (int)BfConstType_GlobalVar:
 			{
 				auto gvConst = (BfGlobalVar*)constant;
 				WriteSLEB128(gvConst->mStreamId);
@@ -1546,8 +1552,8 @@ void BfIRBuilder::Write(const BfIRValue& irValue)
 				}
 			}
 			break;
-		case BfConstType_BitCast:
-		case BfConstType_BitCastNull:
+		case (int)BfConstType_BitCast:
+		case (int)BfConstType_BitCastNull:
 			{
 				auto bitcast = (BfConstantBitCast*)constant;
 				BfIRValue targetConst(BfIRValueFlags_Const, bitcast->mTarget);
@@ -1555,7 +1561,7 @@ void BfIRBuilder::Write(const BfIRValue& irValue)
 				Write(bitcast->mToType);
 			}
 			break;
-		case BfConstType_GEP32_2:
+		case (int)BfConstType_GEP32_2:
 			{
 				auto gepConst = (BfConstantGEP32_2*)constant;
 				BfIRValue targetConst(BfIRValueFlags_Const, gepConst->mTarget);
@@ -1564,7 +1570,7 @@ void BfIRBuilder::Write(const BfIRValue& irValue)
 				Write(gepConst->mIdx1);
 			}
 			break;
-		case BfConstType_PtrToInt:
+		case (int)BfConstType_PtrToInt:
 			{
 				auto ptrToIntConst = (BfConstantPtrToInt*)constant;
 				BfIRValue targetConst(BfIRValueFlags_Const, ptrToIntConst->mTarget);
@@ -1572,12 +1578,12 @@ void BfIRBuilder::Write(const BfIRValue& irValue)
 				Write(ptrToIntConst->mToTypeCode);
 			}
 			break;
-		case BfConstType_AggZero:
+		case (int)BfConstType_AggZero:
 			{
 				Write(constant->mIRType);
 			}
 			break;
-		case BfConstType_Array:
+		case (int)BfConstType_Array:
 			{
 				auto arrayConst = (BfConstantArray*)constant;
 				Write(arrayConst->mType);
@@ -3230,6 +3236,7 @@ BfIRValue BfIRBuilder::CreateNumericCast(BfIRValue val, bool valIsSigned, BfType
 				case BfTypeCode_UInt32: val = (uint32)constVal->mInt64; break;
 				case BfTypeCode_Int64: val = (uint64)(int64)constVal->mInt64; break;
 				case BfTypeCode_UInt64: val = (uint64)constVal->mUInt64; break;
+				default: break;
 				}
 			}
 			else // Float -> Int
@@ -3247,6 +3254,7 @@ BfIRValue BfIRBuilder::CreateNumericCast(BfIRValue val, bool valIsSigned, BfType
 				case BfTypeCode_UInt32: val = (uint32)constVal->mDouble; break;
 				case BfTypeCode_Int64: val = (uint64)(int64)constVal->mDouble; break;
 				case BfTypeCode_UInt64: val = (uint64)constVal->mDouble; break;
+				default: break;
 				}
 			}
 

+ 5 - 0
IDEHelper/Compiler/BfIRCodeGen.cpp

@@ -201,6 +201,7 @@ static llvm::Attribute::AttrKind LLVMMapAttribute(BfIRAttribute attr)
 	case BFIRAttribute_NoUnwind: return llvm::Attribute::NoUnwind;
 	case BFIRAttribute_UWTable: return llvm::Attribute::UWTable;
 	case BFIRAttribute_AlwaysInline: return llvm::Attribute::AlwaysInline;
+	default: break;
 	}
 	return llvm::Attribute::None;
 }
@@ -307,6 +308,7 @@ llvm::Type* BfIRCodeGen::GetLLVMType(BfTypeCode typeCode, bool& isSigned)
 		return llvm::Type::getFloatTy(*mLLVMContext);
 	case BfTypeCode_Double:	
 		return llvm::Type::getDoubleTy(*mLLVMContext);
+	default: break;
 	}
 	return NULL;
 }
@@ -2236,6 +2238,7 @@ void BfIRCodeGen::HandleNextCmd()
 						case BfIRIntrinsic_AtomicXor:
 							op = llvm::AtomicRMWInst::BinOp::Xor;
 							break;
+						default: break;
 						}						
 
 						auto memoryKindConst = llvm::dyn_cast<llvm::ConstantInt>(args[2]);
@@ -2312,6 +2315,7 @@ void BfIRCodeGen::HandleNextCmd()
 									case BfIRIntrinsic_AtomicUMin:
 										cmpVal = mIRBuilder->CreateICmpULE(atomicRMW, args[1]);
 										break;
+									default: break;
 									}
 									result = mIRBuilder->CreateSelect(cmpVal, atomicRMW, args[1]);
 								}
@@ -2335,6 +2339,7 @@ void BfIRCodeGen::HandleNextCmd()
 							case BfIRIntrinsic_AtomicXChg:
 								result = args[1];
 								break;
+							default: break;
 							}
 						}
 						SetResult(curId, result);

+ 7 - 0
IDEHelper/Compiler/BfMangler.cpp

@@ -489,6 +489,7 @@ void BfGNUMangler::Mangle(MangleContext& mangleContext, StringImpl& name, BfType
 			name += "f"; return;
 		case BfTypeCode_Double:
 			name += "d"; return;
+		default: break;
 		}
 
 		name += "?"; return;
@@ -761,6 +762,7 @@ String BfGNUMangler::Mangle(BfMethodInstance* methodInst)
 			case BfBinaryOp_As:
 				methodName = "2as";
 				break;		
+			default: break;
 			}
 
 			switch (operatorDef->mOperatorDeclaration->mUnaryOp)
@@ -804,6 +806,7 @@ String BfGNUMangler::Mangle(BfMethodInstance* methodInst)
 			case BfUnaryOp_Out:
 				methodName = "3out";
 				break;
+			default: break;
 			}
 		}
 	}
@@ -1520,6 +1523,7 @@ void BfMSMangler::Mangle(MangleContext& mangleContext, StringImpl& name, BfType*
 			break;
 		case BfTypeCode_Char32:
 			name += "_U"; break;
+		default: break;
 		}
 	}
 	else if (type->IsTypeInstance())
@@ -1825,6 +1829,7 @@ void BfMSMangler::Mangle(StringImpl& name, bool is64Bit, BfMethodInstance* metho
 			case BfBinaryOp_As:
 				methodName = "__as__";
 				break;
+			default: break;
 			}
 
 			switch (operatorDef->mOperatorDeclaration->mUnaryOp)
@@ -1865,6 +1870,7 @@ void BfMSMangler::Mangle(StringImpl& name, bool is64Bit, BfMethodInstance* metho
 			case BfUnaryOp_Out:
 				methodName = "__out__";
 				break;
+			default: break;
 			}
 
 			switch (operatorDef->mOperatorDeclaration->mAssignOp)
@@ -1902,6 +1908,7 @@ void BfMSMangler::Mangle(StringImpl& name, bool is64Bit, BfMethodInstance* metho
 			case BfAssignmentOp_ExclusiveOr:
 				methodName += "__a_xor__";
 				break;
+			default: break;
 			}
 		}
 

+ 8 - 3
IDEHelper/Compiler/BfModule.cpp

@@ -408,7 +408,7 @@ public:
 		mModule->EmitAppendAlign(align, sizeMultiple);
 	}
 
-	void Visit(BfAstNode* astNode)
+	void Visit(BfAstNode* astNode) override
 	{
 		mModule->VisitChild(astNode);
 	}
@@ -6181,6 +6181,7 @@ BfIRFunction BfModule::GetBuiltInFunc(BfBuiltInFuncType funcTypeId)
 			funcType = mBfIRBuilder->CreateFunctionType(voidType, paramTypes);
 			func = mBfIRBuilder->CreateFunction(funcType, BfIRLinkageType_External, "BfLoadSharedLibraries");
 			break;
+		default: break;
 		}
 
 		mBuiltInFuncs[(int)funcTypeId] = func;
@@ -6264,6 +6265,7 @@ void BfModule::ResolveGenericParamConstraints(BfGenericParamInstance* genericPar
 				case BfTypeCode_Char32:
 					isValidTypeCode = true;
 					break;
+				default: break;
 				}
 				
 				if (isValidTypeCode)
@@ -9134,6 +9136,7 @@ BfTypedValue BfModule::GetTypedValueFromConstant(BfConstant* constant, BfIRConst
 				return castedTypedValue;
 			}
 			break;
+		default: break;
 		}
 	}
 	BfIRValue irValue = ConstantToCurrent(constant, constHolder, wantType);
@@ -15687,11 +15690,13 @@ void BfModule::ProcessMethod(BfMethodInstance* methodInstance, bool isInlineDup)
 		// This is 'inner' (probably a closure) - use binding from outer function
 		methodState.mGenericTypeBindings = prevMethodState.mPrevVal->mGenericTypeBindings;		
 	}
-	else if ((methodInstance->mIsUnspecialized) || (mCurTypeInstance->IsUnspecializedType()) && (!isGenericVariation))
+	else if ((methodInstance->mIsUnspecialized) || 
+		((mCurTypeInstance->IsUnspecializedType()) && (!isGenericVariation)))
 	{		
 		methodState.mGenericTypeBindings = &methodInstance->GetMethodInfoEx()->mGenericTypeBindings;
 	}
-	else if ((((methodInstance->mMethodInfoEx != NULL) && ((int)methodInstance->mMethodInfoEx->mMethodGenericArguments.size() > dependentGenericStartIdx)) || ((mCurTypeInstance->IsGenericTypeInstance())) && (!isGenericVariation)))
+	else if ((((methodInstance->mMethodInfoEx != NULL) && ((int)methodInstance->mMethodInfoEx->mMethodGenericArguments.size() > dependentGenericStartIdx)) || 
+		((mCurTypeInstance->IsGenericTypeInstance()) && (!isGenericVariation))))
 	{		
 		unspecializedMethodInstance = GetUnspecializedMethodInstance(methodInstance);
 		

+ 1 - 1
IDEHelper/Compiler/BfModule.h

@@ -1528,7 +1528,7 @@ public:
 	virtual void Visit(BfForEachStatement* forEachStmt) override;
 	virtual void Visit(BfDeferStatement* deferStmt) override;
 	virtual void Visit(BfBlock* block) override;
-	virtual void Visit(BfLabeledBlock* labeledBlock);
+	virtual void Visit(BfLabeledBlock* labeledBlock) override;
 	virtual void Visit(BfRootNode* rootNode) override;
 	virtual void Visit(BfInlineAsmStatement* asmStmt) override;
 

+ 59 - 33
IDEHelper/Compiler/BfModuleTypeUtils.cpp

@@ -4407,6 +4407,7 @@ BfPrimitiveType* BfModule::GetPrimitiveType(BfTypeCode typeCode)
 		case BfTypeCode_UIntUnknown:
 			primType = (BfPrimitiveType*)ResolveTypeDef(mSystem->mTypeUIntUnknown);
 			break;
+		default: break;
 		}
 		mContext->mPrimitiveTypes[typeCode] = primType;
 	}	
@@ -4900,16 +4901,16 @@ BfType* BfModule::ResolveInnerType(BfType* outerType, BfTypeReference* typeRef,
 	BfNamedTypeReference* namedTypeRef = NULL;
 	BfGenericInstanceTypeRef* genericTypeRef = NULL;
 	BfDirectStrTypeReference* directStrTypeRef = NULL;
-	if (namedTypeRef = BfNodeDynCast<BfNamedTypeReference>(typeRef))
+	if ((namedTypeRef = BfNodeDynCast<BfNamedTypeReference>(typeRef)))
 	{
 		//TYPEDEF nestedTypeDef = namedTypeRef->mTypeDef;
 	}
-	else if (genericTypeRef = BfNodeDynCast<BfGenericInstanceTypeRef>(typeRef))
+	else if ((genericTypeRef = BfNodeDynCast<BfGenericInstanceTypeRef>(typeRef)))
 	{
 		namedTypeRef = BfNodeDynCast<BfNamedTypeReference>(genericTypeRef->mElementType);
 		//TYPEDEF nestedTypeDef = namedTypeRef->mTypeDef;
 	}
-	else if (directStrTypeRef = BfNodeDynCast<BfDirectStrTypeReference>(typeRef))
+	else if ((directStrTypeRef = BfNodeDynCast<BfDirectStrTypeReference>(typeRef)))
 	{
 		//
 	}
@@ -5545,10 +5546,7 @@ BfType* BfModule::ResolveTypeResult(BfTypeReference* typeRef, BfType* resolvedTy
 			//TODO: By only breaking out for "mIgnoreErrors", we classified elements (below) even when a resolvedTypeRef was not found!
 			//Why did we have this mIgnoreErrors check in there?
 // 			if ((resolvedTypeRef == NULL) && (mIgnoreErrors))
-// 			{
-// 				return NULL;
-// 			}
-			if ((resolvedTypeRef == NULL) /*&& (mIgnoreErrors)*/)
+			if (resolvedTypeRef == NULL)
 		 	{
 		 		return NULL;
 		 	}
@@ -6637,7 +6635,7 @@ BfType* BfModule::ResolveTypeRef(BfTypeReference* typeRef, BfPopulateType popula
 			{
 				if (auto parentQualifiedTypeRef = BfNodeDynCast<BfQualifiedTypeReference>(mParentNodeEntry->mNode))
 				{
-					if (typeRef = parentQualifiedTypeRef->mLeft)
+					if (typeRef == parentQualifiedTypeRef->mLeft)
 					{
 						if ((resolveFlags & BfResolveTypeRefFlag_IgnoreLookupError) == 0)
 							TypeRefNotFound(typeRef);
@@ -6926,7 +6924,7 @@ BfType* BfModule::ResolveTypeRef(BfTypeReference* typeRef, BfPopulateType popula
 			BfPrimitiveType* primType = new BfPrimitiveType();
 			primType->mTypeDef = typeDef;
 			resolvedEntry->mValue = primType;
-			BF_ASSERT(BfResolvedTypeSet::Hash(primType, &lookupCtx, NULL) == resolvedEntry->mHash);
+			BF_ASSERT(BfResolvedTypeSet::Hash(primType, &lookupCtx, false) == resolvedEntry->mHash);
 			InitType(primType, populateType);
 			return ResolveTypeResult(typeRef, primType, populateType, resolveFlags);
 		}
@@ -7688,7 +7686,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
 		{
 			auto fromRefType = (BfRefType*)typedVal.mType;
 			auto toRefType = (BfRefType*)toType;
-			if ((fromRefType->mRefKind == toRefType->mRefKind))
+			if (fromRefType->mRefKind == toRefType->mRefKind)
 				checkUnderlying = true;
 			else if ((fromRefType->mRefKind == BfRefType::RefKind_Ref) && (toRefType->mRefKind == BfRefType::RefKind_Mut))
 				checkUnderlying = true; // Allow a ref-to-mut implicit conversion
@@ -7757,8 +7755,8 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
 		if (toType->IsVoidPtr())
 		{
 			if ((genericParamInst->mGenericParamFlags & (BfGenericParamFlag_Class | BfGenericParamFlag_StructPtr)) ||
-				(genericParamInst->mTypeConstraint != NULL) &&
-				((genericParamInst->mTypeConstraint->IsPointer()) || (genericParamInst->mTypeConstraint->IsObjectOrInterface())))
+				((genericParamInst->mTypeConstraint != NULL) &&
+				 ((genericParamInst->mTypeConstraint->IsPointer()) || (genericParamInst->mTypeConstraint->IsObjectOrInterface()))))
 			{
 				return true;
 			}
@@ -8068,6 +8066,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
 			{
 			case BfTypeCode_UInt8:
 				return true;
+			default: break;
 			}
 			break;
 		case BfTypeCode_Char16:
@@ -8075,6 +8074,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
 			{
 			case BfTypeCode_Char8:
 				return true;
+			default: break;
 			}
 			break;
 		case BfTypeCode_Int16:
@@ -8084,6 +8084,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
 				return true;
 			case BfTypeCode_UInt8:
 				return true;
+			default: break;
 			}
 			break;
 		case BfTypeCode_UInt16:
@@ -8091,6 +8092,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
 			{
 			case BfTypeCode_UInt8:
 				return true;
+			default: break;
 			}
 			break;
 		case BfTypeCode_Int32:
@@ -8106,6 +8108,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
 			case BfTypeCode_UInt8:
 			case BfTypeCode_UInt16:
 				return true;
+			default: break;
 			}
 			break;
 		case BfTypeCode_Char32:
@@ -8114,6 +8117,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
 			case BfTypeCode_Char8:
 			case BfTypeCode_Char16:
 				return true;
+			default: break;
 			}
 			break;
 		case BfTypeCode_UInt32:
@@ -8127,6 +8131,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
 				if (mCompiler->mSystem->mPtrSize == 4)
 					return true;
 				break;
+			default: break;
 			}
 			break;
 		case BfTypeCode_Int64:
@@ -8141,6 +8146,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
 			case BfTypeCode_UInt16:
 			case BfTypeCode_UInt32:
 				return true;
+			default: break;
 			}
 			break;
 		case BfTypeCode_UInt64:
@@ -8151,6 +8157,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
 			case BfTypeCode_UInt32:
 			case BfTypeCode_UIntPtr:
 				return true;
+			default: break;
 			}
 			break;
 		case BfTypeCode_IntPtr:
@@ -8168,6 +8175,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
 				if (mCompiler->mSystem->mPtrSize == 8)
 					return true;
 				break;
+			default: break;
 			}
 			break;
 		case BfTypeCode_UIntPtr:
@@ -8181,6 +8189,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
 				if (mCompiler->mSystem->mPtrSize == 8)
 					return true;
 				break;
+			default: break;
 			}
 			break;
 		case BfTypeCode_Single:
@@ -8200,6 +8209,7 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
 			case BfTypeCode_UIntPtr:
 			case BfTypeCode_UIntUnknown:
 				return true;
+			default: break;
 			}
 			break;
 		case BfTypeCode_Double:
@@ -8221,8 +8231,10 @@ bool BfModule::CanImplicitlyCast(BfTypedValue typedVal, BfType* toType, BfCastFl
 				return true;
 			case BfTypeCode_Single:
 				return true;
+			default: break;
 			}
 			break;
+		default: break;
 		}
 	}
 
@@ -8589,7 +8601,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
 		{
 			auto fromRefType = (BfRefType*)typedVal.mType;
 			auto toRefType = (BfRefType*)toType;
-			if ((fromRefType->mRefKind == toRefType->mRefKind))
+			if (fromRefType->mRefKind == toRefType->mRefKind)
 				checkUnderlying = true;
 			else if ((fromRefType->mRefKind == BfRefType::RefKind_Ref) && (toRefType->mRefKind == BfRefType::RefKind_Mut))
 				checkUnderlying = true; // Allow a ref-to-mut implicit conversion
@@ -8738,8 +8750,8 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
 		if (toType->IsVoidPtr())
 		{
 			if ((genericParamInst->mGenericParamFlags & (BfGenericParamFlag_Class | BfGenericParamFlag_StructPtr)) ||
-				(genericParamInst->mTypeConstraint != NULL) &&
-				((genericParamInst->mTypeConstraint->IsPointer()) || (genericParamInst->mTypeConstraint->IsObjectOrInterface())))
+				((genericParamInst->mTypeConstraint != NULL) &&
+				((genericParamInst->mTypeConstraint->IsPointer()) || (genericParamInst->mTypeConstraint->IsObjectOrInterface()))))
 			{
 				return GetDefaultValue(toType);
 			}
@@ -9183,6 +9195,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
 			{
 			case BfTypeCode_Char8:
 				allowCast = true; break;
+			default: break;
 			}
 			break;
 		case BfTypeCode_Int16:
@@ -9192,6 +9205,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
 				allowCast = true; break;
 			case BfTypeCode_UInt8:
 				allowCast = true; break;
+			default: break;
 			}
 			break;
 		case BfTypeCode_UInt16:
@@ -9199,6 +9213,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
 			{
 			case BfTypeCode_UInt8:
 				allowCast = true; break;
+			default: break;
 			}
 			break;
 		case BfTypeCode_Int32:
@@ -9214,6 +9229,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
 			case BfTypeCode_UInt8:
 			case BfTypeCode_UInt16:
 				allowCast = true; break;
+			default: break;
 			}
 			break;
 		case BfTypeCode_Char32:
@@ -9222,6 +9238,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
 			case BfTypeCode_Char8:
 			case BfTypeCode_Char16:
 				allowCast = true; break;
+			default: break;
 			}
 			break;
 		case BfTypeCode_UInt32:
@@ -9235,6 +9252,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
 				if (mCompiler->mSystem->mPtrSize == 4)
 					allowCast = true;
 				break;
+			default: break;
 			}
 			break;
 		case BfTypeCode_Int64:
@@ -9249,6 +9267,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
 			case BfTypeCode_UInt16:
 			case BfTypeCode_UInt32:
 				allowCast = true; break;
+			default: break;
 			}
 			break;
 		case BfTypeCode_UInt64:
@@ -9259,6 +9278,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
 			case BfTypeCode_UInt32:
 			case BfTypeCode_UIntPtr:
 				allowCast = true; break;
+			default: break;
 			}
 			break;
 		case BfTypeCode_IntPtr:
@@ -9281,6 +9301,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
 				if (mCompiler->mSystem->mPtrSize == 8)
 					allowCast = true;
 				break;
+			default: break;
 			}
 			break;
 		case BfTypeCode_UIntPtr:
@@ -9294,6 +9315,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
 				if (mCompiler->mSystem->mPtrSize == 8)
 					allowCast = true;
 				break;
+			default: break;
 			}
 			break;
 		case BfTypeCode_Single:
@@ -9313,6 +9335,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
 			case BfTypeCode_UIntPtr:
 			case BfTypeCode_UIntUnknown:
 				allowCast = true; break;
+			default: break;
 			}
 			break;
 		case BfTypeCode_Double:
@@ -9334,8 +9357,10 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
 				allowCast = true; break;
 			case BfTypeCode_Single:
 				allowCast = true; break;
+			default: break;
 			}
 			break;
+		default: break;
 		}
 
 		if (explicitCast)
@@ -10239,25 +10264,26 @@ void BfModule::VariantToString(StringImpl& str, const BfVariant& variant)
 		str += StrFormat("%llu", variant.mInt64);
 		break;
 	case BfTypeCode_Single:
-	{
-		char cstr[64];
-		ExactMinimalFloatToStr(variant.mSingle, cstr);
-		str += cstr;
-		if (strchr(cstr, '.') == NULL)
-			str += ".0f";
-		else
-			str += "f";
-	}
-	break;
+		{
+			char cstr[64];
+			ExactMinimalFloatToStr(variant.mSingle, cstr);
+			str += cstr;
+			if (strchr(cstr, '.') == NULL)
+				str += ".0f";
+			else
+				str += "f";
+		}
+		break;
 	case BfTypeCode_Double:
-	{
-		char cstr[64];
-		ExactMinimalDoubleToStr(variant.mDouble, cstr);
-		str += cstr;
-		if (strchr(cstr, '.') == NULL)
-			str += ".0";
-	}
-	break;
+		{
+			char cstr[64];
+			ExactMinimalDoubleToStr(variant.mDouble, cstr);
+			str += cstr;
+			if (strchr(cstr, '.') == NULL)
+				str += ".0";
+		}
+		break;
+	default: break;
 	}
 }
 

+ 28 - 23
IDEHelper/Compiler/BfParser.cpp

@@ -653,6 +653,7 @@ bool BfParser::EvaluatePreprocessor(BfExpression* expr)
 			return EvaluatePreprocessor(binaryOp->mLeft) || EvaluatePreprocessor(binaryOp->mRight);
 		case BfBinaryOp_ConditionalAnd:
 			return EvaluatePreprocessor(binaryOp->mLeft) && EvaluatePreprocessor(binaryOp->mRight);
+		default: break;
 		}
 	}
 
@@ -662,6 +663,7 @@ bool BfParser::EvaluatePreprocessor(BfExpression* expr)
 		{
 		case BfUnaryOp_Not:
 			return !EvaluatePreprocessor(unaryOp->mExpression);
+		default: break;
 		}
 	}
 
@@ -2154,7 +2156,7 @@ void BfParser::NextToken(int endIdx)
 			{				
 				bool prevIsDot = (mSrcIdx > 1) && (mSrc[mSrcIdx - 2] == '.');
 
-				if ((c == '-') /*&& ((mSrc[mSrcIdx] < '0') || mSrc[mSrcIdx] > '9')*/)
+				if (c == '-')
 				{
 					// Not a number!
 					if (mSrc[mSrcIdx] == '-')
@@ -2258,7 +2260,7 @@ void BfParser::NextToken(int endIdx)
 							}
 							else
 							{
-								if (expSign = -1)
+								if (expSign == -1)
 									expVal = -expVal;
 								mSrcIdx--;
 								break;
@@ -2938,6 +2940,7 @@ void BfParser::NextToken(int endIdx)
 					case UTF8PROC_CATEGORY_LO:
 					case UTF8PROC_CATEGORY_NL:
 						allowChar = true;
+					default: break;
 					}
 				}
 
@@ -2981,6 +2984,7 @@ void BfParser::NextToken(int endIdx)
 							case UTF8PROC_CATEGORY_PC:
 							case UTF8PROC_CATEGORY_CF:
 								isValidChar = true;
+							default: break;
 							}
 						}
 
@@ -3134,29 +3138,30 @@ BfAstNode* BfParser::CreateNode()
 {
 	switch (mSyntaxToken)
 	{
-	case BfSyntaxToken_Token:
-	{
-		auto bfTokenNode = mAlloc->Alloc<BfTokenNode>();
-		bfTokenNode->Init(this);
-		bfTokenNode->SetToken(mToken);
-		return bfTokenNode;
-	}
+		case BfSyntaxToken_Token:
+		{
+			auto bfTokenNode = mAlloc->Alloc<BfTokenNode>();
+			bfTokenNode->Init(this);
+			bfTokenNode->SetToken(mToken);
+			return bfTokenNode;
+		}
 	case BfSyntaxToken_Identifier:
-	{
-		//auto bfIdentifierNode = new BfIdentifierNode();
-		auto bfIdentifierNode = mAlloc->Alloc<BfIdentifierNode>();
-		bfIdentifierNode->Init(this);
-		return bfIdentifierNode;
-	}
+		{
+			//auto bfIdentifierNode = new BfIdentifierNode();
+			auto bfIdentifierNode = mAlloc->Alloc<BfIdentifierNode>();
+			bfIdentifierNode->Init(this);
+			return bfIdentifierNode;
+		}
 	case BfSyntaxToken_Literal:
-	{
-		auto bfLiteralExpression = mAlloc->Alloc<BfLiteralExpression>();
-		bfLiteralExpression->Init(this);
-		bfLiteralExpression->mValue = mLiteral;
-		mLiteral.mTypeCode = BfTypeCode_None;
-		mLiteral.mWarnType = 0;
-		return bfLiteralExpression;
-	}
+		{
+			auto bfLiteralExpression = mAlloc->Alloc<BfLiteralExpression>();
+			bfLiteralExpression->Init(this);
+			bfLiteralExpression->mValue = mLiteral;
+			mLiteral.mTypeCode = BfTypeCode_None;
+			mLiteral.mWarnType = 0;
+			return bfLiteralExpression;
+		}
+	default: break;
 	}
 
 	return NULL;

+ 1 - 1
IDEHelper/Compiler/BfPrinter.h

@@ -150,7 +150,7 @@ public:
 	virtual void Visit(BfDynamicCastExpression* dynCastExpr) override;
 	virtual void Visit(BfCastExpression* castExpr) override;
 	virtual void Visit(BfDelegateBindExpression* invocationExpr) override;	
-	virtual void Visit(BfLambdaBindExpression* lambdaBindExpr);
+	virtual void Visit(BfLambdaBindExpression* lambdaBindExpr) override;
 	virtual void Visit(BfObjectCreateExpression* invocationExpr) override;
 	virtual void Visit(BfBoxExpression* boxExpr) override;
 	virtual void Visit(BfInvocationExpression* invocationExpr) override;	

+ 23 - 17
IDEHelper/Compiler/BfReducer.cpp

@@ -439,6 +439,7 @@ bool BfReducer::IsTypeReference(BfAstNode* checkNode, BfToken successToken, int*
 										// Failed
 										done = true;
 										break;
+									default: break;
 									}
 
 									if (done)
@@ -1001,6 +1002,7 @@ bool BfReducer::IsLocalMethod(BfAstNode* nameNode)
 					return false;
 				case BfToken_Where: // Always denotes a local method
 					return true;
+				default: break;
 				}
 			}
 		}
@@ -1889,6 +1891,7 @@ BfExpression* BfReducer::CreateExpression(BfAstNode* node, CreateExprFlags creat
 				case BfToken_StrideOf:
 					typeAttrExpr = mAlloc->Alloc<BfStrideOfExpression>();
 					break;
+				default: break;
 				}
 
 				ReplaceNode(tokenNode, typeAttrExpr);
@@ -2013,7 +2016,7 @@ BfExpression* BfReducer::CreateExpression(BfAstNode* node, CreateExprFlags creat
 				MEMBER_SET_CHECKED(delegateBindExpr, mTarget, expr);
 
 				auto nextNode = mVisitorPos.GetNext();
-				if (tokenNode = BfNodeDynCast<BfTokenNode>(nextNode))
+				if ((tokenNode = BfNodeDynCast<BfTokenNode>(nextNode)))
 				{
 					if (tokenNode->GetToken() == BfToken_LChevron)
 					{
@@ -3313,7 +3316,8 @@ BfSwitchStatement* BfReducer::CreateSwitchStatement(BfTokenNode* tokenNode)
 		BfToken token = BfToken_None;
 		if (tokenNode != NULL)
 			token = tokenNode->GetToken();
-		if ((tokenNode == NULL) || (token != BfToken_Case) && (token != BfToken_When) && (token != BfToken_Default))
+		if ((tokenNode == NULL) || 
+			((token != BfToken_Case) && (token != BfToken_When) && (token != BfToken_Default)))
 		{
 			Fail("Expected 'case'", child);
 			return switchStatement;
@@ -3618,7 +3622,7 @@ BfAstNode* BfReducer::DoCreateStatement(BfAstNode* node, CreateStmtFlags createS
 			MEMBER_SET(deleteStmt, mDeleteToken, tokenNode);
 
 			auto nextNode = mVisitorPos.GetNext();
-			if (tokenNode = BfNodeDynCast<BfTokenNode>(nextNode))
+			if ((tokenNode = BfNodeDynCast<BfTokenNode>(nextNode)))
 			{
 				if (tokenNode->GetToken() == BfToken_Append)
 				{
@@ -3869,7 +3873,7 @@ BfAstNode* BfReducer::DoCreateStatement(BfAstNode* node, CreateStmtFlags createS
 				MEMBER_SET(methodDecl, mNameNode, nameNode);
 
 				auto nextNode = mVisitorPos.GetNext();
-				if (tokenNode = BfNodeDynCast<BfTokenNode>(nextNode))
+				if ((tokenNode = BfNodeDynCast<BfTokenNode>(nextNode)))
 				{
 					if (tokenNode->GetToken() == BfToken_LChevron)
 					{
@@ -4087,7 +4091,7 @@ BfAstNode* BfReducer::DoCreateStatement(BfAstNode* node, CreateStmtFlags createS
 		bool isValidFinish = false;
 
 		BfTokenNode* tokenNode;
-		if (tokenNode = BfNodeDynCast<BfTokenNode>(mVisitorPos.GetNext()))
+		if ((tokenNode = BfNodeDynCast<BfTokenNode>(mVisitorPos.GetNext())))
 		{
 			int token = tokenNode->GetToken();
 			if ((token == BfToken_AssignEquals) || (token == BfToken_Semicolon) || (token == BfToken_Comma))
@@ -4352,7 +4356,7 @@ BfAstNode* BfReducer::CreateStatement(BfAstNode* node, CreateStmtFlags createStm
 			mPrevStmtHadError = false;
 
 			// Must be an expression.  Always set CreateExprFlags_NoCaseExpr, to keep ending statements in a switch case to look like case expressions
-			auto expr = CreateExpression(node, (CreateExprFlags)(createStmtFlags & CreateStmtFlags_To_CreateExprFlags_Mask | CreateExprFlags_NoCaseExpr));
+			auto expr = CreateExpression(node, (CreateExprFlags)((createStmtFlags & CreateStmtFlags_To_CreateExprFlags_Mask) | CreateExprFlags_NoCaseExpr));
 
 			auto nextNode = mVisitorPos.GetNext();
 			if (nextNode != NULL)
@@ -4821,7 +4825,7 @@ BfTypeReference* BfReducer::DoCreateTypeRef(BfAstNode* firstNode, bool parseArra
 					MEMBER_SET(qualifiedTypeRef, mRight, typeRef);
 
 					nextNode = mVisitorPos.GetNext();
-					if (tokenNode = BfNodeDynCast<BfTokenNode>(nextNode))
+					if ((tokenNode = BfNodeDynCast<BfTokenNode>(nextNode)))
 					{
 						if (tokenNode->GetToken() == BfToken_Dot)
 						{
@@ -5727,7 +5731,7 @@ BfAstNode* BfReducer::ReadTypeMember(BfTokenNode* tokenNode, int depth)
 			MEMBER_SET(methodDecl, mNameNode, nameNode);
 
 			auto nextNode = mVisitorPos.GetNext();
-			if (tokenNode = BfNodeDynCast<BfTokenNode>(nextNode))
+			if ((tokenNode = BfNodeDynCast<BfTokenNode>(nextNode)))
 			{
 				if (tokenNode->GetToken() == BfToken_LChevron)
 				{
@@ -6903,7 +6907,7 @@ BfDelegateBindExpression* BfReducer::CreateDelegateBindExpression(BfAstNode* all
 	MEMBER_SET_CHECKED(delegateBindExpr, mTarget, expr);
 
 	auto nextNode = mVisitorPos.GetNext();
-	if (tokenNode = BfNodeDynCast<BfTokenNode>(nextNode))
+	if ((tokenNode = BfNodeDynCast<BfTokenNode>(nextNode)))
 	{
 		if (tokenNode->GetToken() == BfToken_LChevron)
 		{
@@ -7446,7 +7450,7 @@ BfMemberReferenceExpression* BfReducer::CreateMemberReferenceExpression(BfAstNod
 		}
 	}
 
-	if (tokenNode = BfNodeDynCast<BfTokenNode>(mVisitorPos.GetNext()))
+	if ((tokenNode = BfNodeDynCast<BfTokenNode>(mVisitorPos.GetNext())))
 	{
 		if (tokenNode->GetToken() == BfToken_LBracket)
 		{
@@ -7507,7 +7511,7 @@ BfTupleExpression* BfReducer::CreateTupleExpression(BfTokenNode* node, BfExpress
 		{
 			// Failed, but can we pull in the closing rparen?
 			auto nextNode = mVisitorPos.GetNext();
-			if (closeParenToken = BfNodeDynCast<BfTokenNode>(nextNode))
+			if ((closeParenToken = BfNodeDynCast<BfTokenNode>(nextNode)))
 			{
 				if (closeParenToken->GetToken() == BfToken_RParen)
 				{
@@ -7691,7 +7695,7 @@ BfAstNode* BfReducer::CreateTopLevelObject(BfTokenNode* tokenNode, BfAttributeDi
 			{
 				// Failure, but eat any following dot for autocompletion purposes
 				auto nextNode = mVisitorPos.GetNext();
-				if (tokenNode = BfNodeDynCast<BfTokenNode>(nextNode))
+				if ((tokenNode = BfNodeDynCast<BfTokenNode>(nextNode)))
 				{
 					if (tokenNode->GetToken() == BfToken_Dot)
 					{
@@ -7916,7 +7920,7 @@ BfAstNode* BfReducer::CreateTopLevelObject(BfTokenNode* tokenNode, BfAttributeDi
 		MEMBER_SET_CHECKED(typeDeclaration, mNameNode, name);
 
 		auto nextNode = mVisitorPos.GetNext();
-		if (tokenNode = BfNodeDynCast<BfTokenNode>(nextNode))
+		if ((tokenNode = BfNodeDynCast<BfTokenNode>(nextNode)))
 		{
 			if (tokenNode->GetToken() == BfToken_LChevron)
 			{
@@ -8100,9 +8104,10 @@ BfAstNode* BfReducer::CreateTopLevelObject(BfTokenNode* tokenNode, BfAttributeDi
 			HandleTypeDeclaration(typeDeclaration, attributes);
 		}		
 
-		return typeDeclaration;
+		return typeDeclaration;		
 	}
 	break;
+	default: break;
 	}
 
 	if (isSimpleEnum)
@@ -8807,7 +8812,7 @@ bool BfReducer::ParseMethod(BfMethodDeclaration* methodDeclaration, SizedArrayIm
 
 	auto typeDecl = mCurTypeDecl;
 	auto nextNode = mVisitorPos.GetNext();
-	if (tokenNode = BfNodeDynCast<BfTokenNode>(nextNode))
+	if ((tokenNode = BfNodeDynCast<BfTokenNode>(nextNode)))
 	{
 		if (tokenNode->GetToken() == BfToken_Mut)
 		{
@@ -8822,7 +8827,7 @@ bool BfReducer::ParseMethod(BfMethodDeclaration* methodDeclaration, SizedArrayIm
 		}
 	}
 
-	if (tokenNode = BfNodeDynCast<BfTokenNode>(nextNode))
+	if ((tokenNode = BfNodeDynCast<BfTokenNode>(nextNode)))
 	{
 		if (tokenNode->GetToken() == BfToken_Where)
 		{
@@ -9102,6 +9107,7 @@ BfGenericConstraintsDeclaration* BfReducer::CreateGenericConstraintsDeclaration(
 				case BfToken_Var:
 					addToConstraint = true;
 					break;
+				default: break;
 				}
 
 				if (addToConstraint)
@@ -9115,7 +9121,7 @@ BfGenericConstraintsDeclaration* BfReducer::CreateGenericConstraintsDeclaration(
 					{
 						addToConstraint = true;
 						nextNode = mVisitorPos.GetNext();
-						if (tokenNode = BfNodeDynCast<BfTokenNode>(nextNode))
+						if ((tokenNode = BfNodeDynCast<BfTokenNode>(nextNode)))
 						{
 							if (tokenNode->GetToken() == BfToken_Star)
 							{

+ 17 - 17
IDEHelper/Compiler/BfResolvedTypeUtils.h

@@ -538,11 +538,11 @@ public:
 		(mTypeDef->mTypeCode == BfTypeCode_Int32) || (mTypeDef->mTypeCode == BfTypeCode_Int64) || (mTypeDef->mTypeCode == BfTypeCode_IntPtr) ||
 		(mTypeDef->mTypeCode == BfTypeCode_IntUnknown); }
 	virtual bool IsIntUnknown() override { return (mTypeDef->mTypeCode == BfTypeCode_IntUnknown) || (mTypeDef->mTypeCode == BfTypeCode_UIntUnknown); }
-	virtual bool IsChar() { return (mTypeDef->mTypeCode == BfTypeCode_Char8) || (mTypeDef->mTypeCode == BfTypeCode_Char16) || (mTypeDef->mTypeCode == BfTypeCode_Char32); }
+	virtual bool IsChar() override { return (mTypeDef->mTypeCode == BfTypeCode_Char8) || (mTypeDef->mTypeCode == BfTypeCode_Char16) || (mTypeDef->mTypeCode == BfTypeCode_Char32); }
 	virtual bool IsFloat() override { return (mTypeDef->mTypeCode == BfTypeCode_Single) || (mTypeDef->mTypeCode == BfTypeCode_Double); }
 	virtual bool IsNull() override { return mTypeDef->mTypeCode == BfTypeCode_NullPtr; }
 	virtual bool IsVoid() override { return mTypeDef->mTypeCode == BfTypeCode_None; }	
-	virtual bool CanBeValuelessType() { return mTypeDef->mTypeCode == BfTypeCode_None; }
+	virtual bool CanBeValuelessType() override { return mTypeDef->mTypeCode == BfTypeCode_None; }
 	virtual bool IsValuelessType() override { return mTypeDef->mTypeCode == BfTypeCode_None; }
 	virtual bool IsSelf() override { return mTypeDef->mTypeCode == BfTypeCode_Self; }
 	virtual bool IsDot() override { return mTypeDef->mTypeCode == BfTypeCode_Dot; }
@@ -921,7 +921,7 @@ public:
 	BfType* mElementType;
 
 	virtual bool IsRetTypeType() override { return true; }
-	virtual bool CanBeValuelessType() { return true; }
+	virtual bool CanBeValuelessType() override { return true; }
 	virtual bool IsValuelessType() override { return true; }
 
 	virtual bool IsUnspecializedType() override { return mElementType->IsUnspecializedType(); }
@@ -1581,16 +1581,16 @@ public:
 	
 	~BfTypeInstance();	
 
-	virtual BfModule* GetModule() { return mModule; }
+	virtual BfModule* GetModule() override { return mModule; }
 	virtual BfTypeInstance* ToTypeInstance() override { return this; }
 	virtual bool IsDependentOnUnderlyingType() override { return true; }
 	virtual BfPrimitiveType* ToPrimitiveType() override { return GetUnderlyingType()->ToPrimitiveType();  }
-	virtual bool HasWrappedRepresentation() { return IsTypedPrimitive(); }
+	virtual bool HasWrappedRepresentation() override { return IsTypedPrimitive(); }
 	
 	int GetEndingInstanceAlignment() { if (mInstSize % mInstAlign == 0) return mInstAlign; return mInstSize % mInstAlign; }
 	virtual bool HasTypeFailed() override { return mTypeFailed; } 
 	virtual bool IsReified() override { return mIsReified; }
-	virtual bool NeedsExplicitAlignment() { return !IsSizeAligned() || mIsPacked; }	
+	virtual bool NeedsExplicitAlignment() override { return !IsSizeAligned() || mIsPacked; }	
 	virtual bool IsDataIncomplete() override { return ((mTypeIncomplete) || (mBaseTypeMayBeIncomplete)) && (!mNeedsMethodProcessing); }	
 	virtual bool IsIncomplete() override { return (mTypeIncomplete) || (mBaseTypeMayBeIncomplete); }
 	virtual bool IsSplattable() override { BF_ASSERT((mInstSize >= 0) || (!IsComposite())); return mIsSplattable; }
@@ -1616,7 +1616,7 @@ public:
 	//virtual bool IsValuelessType() override { return (mIsTypedPrimitive) && (mInstSize == 0); }	
 	virtual bool CanBeValuelessType() override { return (mTypeDef->mTypeCode == BfTypeCode_Struct) || (mTypeDef->mTypeCode == BfTypeCode_Enum); }
 	virtual bool IsValuelessType() override;
-	virtual bool HasPackingHoles() { return mHasPackingHoles; }
+	virtual bool HasPackingHoles() override { return mHasPackingHoles; }
 	virtual bool IsTypeMemberAccessible(BfTypeDef* declaringTypeDef, BfTypeDef* activeTypeDef) override;
 	virtual bool IsTypeMemberAccessible(BfTypeDef* declaringTypeDef, BfProject* curProject) override;	
 	virtual bool WantsGCMarking() override;
@@ -1684,7 +1684,7 @@ public:
 	virtual bool IsUnspecializedType() override { return mElementType->IsUnspecializedType(); }
 	virtual bool IsUnspecializedTypeVariation() override { return mElementType->IsUnspecializedTypeVariation(); }		
 
-	virtual BfTypeInstance* GetImplBaseType() { return (mBoxedBaseType != NULL) ? mBoxedBaseType : mBaseType; }
+	virtual BfTypeInstance* GetImplBaseType() override { return (mBoxedBaseType != NULL) ? mBoxedBaseType : mBaseType; }
 
 	bool IsBoxedStructPtr()
 	{
@@ -1906,7 +1906,7 @@ public:
 
 public:
 	virtual bool IsWrappableType() override { return true; }
-	virtual bool IsReified() { return mElementType->IsReified(); }
+	virtual bool IsReified() override { return mElementType->IsReified(); }
 	virtual bool IsPointer() override { return true; }
 	virtual bool IsIntPtrable() override { return true; }
 	virtual bool IsStructPtr() override { return mElementType->IsStruct(); }
@@ -1951,7 +1951,7 @@ public:
 	virtual bool IsComposite() override { return true; }
 	virtual bool IsMethodRef() override { return true; }
 	virtual bool IsSplattable() override { return true; }
-	virtual int GetSplatCount() { return (int)mDataToParamIdx.mSize; }
+	virtual int GetSplatCount() override { return (int)mDataToParamIdx.mSize; }
 
 	virtual bool IsOnDemand() override { return true; }
 	virtual bool IsTemporary() override { return true; }
@@ -1990,7 +1990,7 @@ public:
 
 	virtual bool IsDataIncomplete() override { CheckElement(); return mDefineState < BfTypeDefineState_Defined; }
 	virtual bool IsIncomplete() override { CheckElement(); return mDefineState < BfTypeDefineState_Defined; }
-	virtual bool IsReified() { return mElementType->IsReified(); }
+	virtual bool IsReified() override { return mElementType->IsReified(); }
 
 	virtual bool IsRef() override { return true; }
 	virtual bool IsDependentOnUnderlyingType() override { return true; }
@@ -2027,17 +2027,17 @@ public:
 	bool mWantsGCMarking;
 
 public:
-	virtual bool NeedsExplicitAlignment() { return mElementType->NeedsExplicitAlignment(); }
+	virtual bool NeedsExplicitAlignment() override { return mElementType->NeedsExplicitAlignment(); }
 
 	virtual bool IsSizedArray() override { return true; }
 		
 	virtual bool IsWrappableType() override { return true; }
 	virtual bool IsValueType() override { return true; } // Is a type of struct
-	virtual bool IsValueTypeOrValueTypePtr() { return true; }
+	virtual bool IsValueTypeOrValueTypePtr() override { return true; }
 	virtual bool IsComposite() override { return true; }
 	virtual bool IsStruct() override { return false; } // But IsStruct infers a definition, which it does not have
 	virtual bool IsStructOrStructPtr() override { return false; }
-	virtual bool IsReified() { return mElementType->IsReified(); }
+	virtual bool IsReified() override { return mElementType->IsReified(); }
 
 	virtual bool IsDependentOnUnderlyingType() override { return true; }
 	virtual BfType* GetUnderlyingType() override { return mElementType; }
@@ -2056,17 +2056,17 @@ public:
 	BfType* mElementCountSource;
 
 public:
-	virtual bool NeedsExplicitAlignment() { return mElementType->NeedsExplicitAlignment(); }
+	virtual bool NeedsExplicitAlignment() override { return mElementType->NeedsExplicitAlignment(); }
 
 	virtual bool IsUnknownSizedArray() override { return true; }
 
 	virtual bool IsWrappableType() override { return true; }
 	virtual bool IsValueType() override { return true; } // Is a type of struct
-	virtual bool IsValueTypeOrValueTypePtr() { return true; }
+	virtual bool IsValueTypeOrValueTypePtr() override { return true; }
 	virtual bool IsComposite() override { return true; }
 	virtual bool IsStruct() override { return false; } // But IsStruct infers a definition, which it does not have
 	virtual bool IsStructOrStructPtr() override { return false; }
-	virtual bool IsReified() { return mElementType->IsReified(); }
+	virtual bool IsReified() override { return mElementType->IsReified(); }
 
 	virtual bool IsDependentOnUnderlyingType() override { return true; }
 	virtual BfType* GetUnderlyingType() override { return mElementType; }

+ 1 - 1
IDEHelper/Compiler/BfSourceClassifier.cpp

@@ -382,7 +382,7 @@ void BfSourceClassifier::Visit(BfInvocationExpression* invocationExpr)
 		VisitChild(qualifiedName->mDot);
 		identifier = qualifiedName->mRight;		
 	}
-	else if (identifier = BfNodeDynCast<BfIdentifierNode>(target))
+	else if ((identifier = BfNodeDynCast<BfIdentifierNode>(target)))
 	{
 		// Leave as BfAttributedIdentifierNode if that's the case
 		identifier = target;

+ 1 - 0
IDEHelper/Compiler/BfSystem.cpp

@@ -2043,6 +2043,7 @@ bool BfSystem::DoesLiteralFit(BfTypeCode typeCode, int64 value)
 		return (value >= 0) && (value < 0x100000000LL);
 	case BfTypeCode_UInt64:
 		return (value >= 0);
+	default: break;
 	}
 
 	return false;

+ 26 - 28
IDEHelper/LinuxDebugger.cpp

@@ -1,29 +1,27 @@
-#include "BeefySysLib/Common.h"

-#include "LinuxDebugger.h"

-#include "Debugger.h"

-#include "X86Target.h"

-

-namespace Beefy

-{

-	class DbgMiniDump;

-}

-

-USING_NS_BF_DBG;

-USING_NS_BF;

-

-

-NS_BF_BEGIN

-

-Beefy::Debugger* CreateDebugger32(DebugManager* debugManager, DbgMiniDump* miniDump)

-{

-	return NULL;

-}

-

-Beefy::Debugger* CreateDebugger64(DebugManager* debugManager, DbgMiniDump* miniDump)

-{

-	if (gX86Target == NULL)

-		gX86Target = new X86Target();

-	return NULL;

-}

-

+#include "BeefySysLib/Common.h"
+#include "LinuxDebugger.h"
+#include "Debugger.h"
+#include "X86Target.h"
+
+namespace Beefy
+{
+	class DbgMiniDump;
+}
+
+USING_NS_BF_DBG;
+USING_NS_BF;
+NS_BF_BEGIN
+
+Beefy::Debugger* CreateDebugger32(DebugManager* debugManager, DbgMiniDump* miniDump)
+{
+	return NULL;
+}
+
+Beefy::Debugger* CreateDebugger64(DebugManager* debugManager, DbgMiniDump* miniDump)
+{
+	if (gX86Target == NULL)
+		gX86Target = new X86Target();
+	return NULL;
+}
+
 NS_BF_END

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 16 - 7
bin/build.sh


BIN
extern/.DS_Store


Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels