2
0
Эх сурвалжийг харах

Fixed cascade error, switched minidump test to use symbols.beeflang.org

Brian Fiete 6 жил өмнө
parent
commit
3625d76cc7

+ 1 - 1
IDE/BeefProj.toml

@@ -27,7 +27,7 @@ TargetDirectory = "$(WorkspaceDir)/dist"
 TargetName = "BeefIDE_d"
 OtherLinkFlags = "$(LinkFlags) Comdlg32.lib kernel32.lib user32.lib advapi32.lib shell32.lib IDEHelper64_d.lib"
 CLibType = "Dynamic"
-DebugCommandArguments = "-proddir=C:\\Beef\\IDE\\Tests\\Test1 -test=scripts\\HotSwap_VirtualRemap.txt -platform=Win64 -testNoExit"
+DebugCommandArguments = "-test=scripts\\Minidump.txt -testNoExit"
 DebugWorkingDirectory = "c:\\Beef\\IDE\\Tests\\EmptyTest"
 EnvironmentVars = ["_NO_DEBUG_HEAP=1"]
 

+ 1 - 1
IDE/Tests/EmptyTest/scripts/Minidump.txt

@@ -1,4 +1,4 @@
-SetSymSrvOptions("C:/SymCache", "http://linux.beefy2d.com/symbols\nhttps://msdl.microsoft.com/download/symbols", "TempCache")
+SetSymSrvOptions("C:/SymCache", "http://symbols.beeflang.org/\nhttps://msdl.microsoft.com/download/symbols", "TempCache")
 #SetSymSrvOptions("C:/SymCache", "https://msdl.microsoft.com/download/symbols\nhttps://chromium-browser-symsrv.commondatastorage.googleapis.com", "TempCache")
 #SetSymSrvOptions("C:/SymCache", "https://msdl.microsoft.com/download/symbols\nhttps://chromium-browser-symsrv.commondatastorage.googleapis.com", "None")
 

+ 4 - 0
IDE/mintest/src/main3.bf

@@ -130,6 +130,10 @@ class Blurg
 
 	public static void Hey()
 	{
+		TestStruct ts = .();
+		//int val = ts..mA;
+		ts.mA = 123;
+
 		VoidCall();
 		int val0 = GetInt();
 

+ 49 - 41
IDE/src/IDEApp.bf

@@ -4737,11 +4737,13 @@ namespace IDE
 			mViewWhiteSpace.mMenu = AddMenuItem(advancedEditMenu, "View White Space", "View White Space", null, null, true, mViewWhiteSpace.Bool ? 1 : 0);
 			AddMenuItem(advancedEditMenu, "Reformat Document", "Reformat Document");
 
-			subMenu.AddMenuItem(null);
-
-			var internalEditMenu = subMenu.AddMenuItem("Internal");
-			internalEditMenu.AddMenuItem("Hilight Cursor References", null, new (menu) => { ToggleCheck(menu, ref gApp.mSettings.mEditorSettings.mHiliteCursorReferences); }, null, null, true, gApp.mSettings.mEditorSettings.mHiliteCursorReferences ? 1 : 0);
-			internalEditMenu.AddMenuItem("Delayed Autocomplete", null, new (menu) => { ToggleCheck(menu, ref gApp.mDbgDelayedAutocomplete); }, null, null, true, gApp.mDbgDelayedAutocomplete ? 1 : 0);
+			if (mSettings.mEnableDevMode)
+			{
+				subMenu.AddMenuItem(null);
+				var internalEditMenu = subMenu.AddMenuItem("Internal");
+				internalEditMenu.AddMenuItem("Hilight Cursor References", null, new (menu) => { ToggleCheck(menu, ref gApp.mSettings.mEditorSettings.mHiliteCursorReferences); }, null, null, true, gApp.mSettings.mEditorSettings.mHiliteCursorReferences ? 1 : 0);
+				internalEditMenu.AddMenuItem("Delayed Autocomplete", null, new (menu) => { ToggleCheck(menu, ref gApp.mDbgDelayedAutocomplete); }, null, null, true, gApp.mDbgDelayedAutocomplete ? 1 : 0);
+			}
 
 			//////////
 
@@ -4774,10 +4776,13 @@ namespace IDE
 			//subMenu.AddMenuItem("Compile Current File", null, new (menu) => { CompileCurrentFile(); });
             AddMenuItem(subMenu, "Cancel Build", "Cancel Build", new (menu) => { menu.SetDisabled(!IsCompiling); });
 
-			var internalBuildMenu = subMenu.AddMenuItem("Internal");
-            internalBuildMenu.AddMenuItem("Autobuild (Debug)", null, new (menu) => { mDebugAutoBuild = !mDebugAutoBuild; });
-            internalBuildMenu.AddMenuItem("Autorun (Debug)", null, new (menu) => { mDebugAutoRun = !mDebugAutoRun; });
-			internalBuildMenu.AddMenuItem("Disable Compiling", null, new (menu) => { ToggleCheck(menu, ref mDisableBuilding); }, null, null, true, mDisableBuilding ? 1 : 0);
+			if (mSettings.mEnableDevMode)
+			{
+				var internalBuildMenu = subMenu.AddMenuItem("Internal");
+	            internalBuildMenu.AddMenuItem("Autobuild (Debug)", null, new (menu) => { mDebugAutoBuild = !mDebugAutoBuild; });
+	            internalBuildMenu.AddMenuItem("Autorun (Debug)", null, new (menu) => { mDebugAutoRun = !mDebugAutoRun; });
+				internalBuildMenu.AddMenuItem("Disable Compiling", null, new (menu) => { ToggleCheck(menu, ref mDisableBuilding); }, null, null, true, mDisableBuilding ? 1 : 0);
+			}
 
 			//////////
 
@@ -4803,38 +4808,41 @@ namespace IDE
 			AddMenuItem(newBreakpointMenu, "&Memory Breakpoint...", "Breakpoint Memory");
 			AddMenuItem(newBreakpointMenu, "&Symbol Breakpoint...", "Breakpoint Symbol");
 
-			var internalDebugMenu = subMenu.AddMenuItem("Internal");
-			internalDebugMenu.AddMenuItem("Error Test", null, new (menu) => { DoErrorTest(); } );
-			internalDebugMenu.AddMenuItem("Reconnect BeefPerf", null, new (menu) => { BeefPerf.RetryConnect(); } );
-            AddMenuItem(internalDebugMenu, "Report Memory", "Report Memory");
-			internalDebugMenu.AddMenuItem("Crash", null, new (menu) => { Runtime.FatalError("Bad"); });
-			internalDebugMenu.AddMenuItem("Exit Test", null, new (menu) => { ExitTest(); });
-			internalDebugMenu.AddMenuItem("Run Test", null, new (menu) => { mRunTest = !mRunTest; });
-			internalDebugMenu.AddMenuItem("GC Collect", null, new (menu) =>
-                {
-                    var profileId = Profiler.StartSampling().GetValueOrDefault();
-					for (int i < 10)
-						GC.Collect(false);
-					if (profileId != 0)
-						profileId.Dispose();
-                });
-			internalDebugMenu.AddMenuItem("Enable GC Collect", null, new (menu) => { ToggleCheck(menu, ref mEnableGCCollect); EnableGCCollect = mEnableGCCollect; }, null, null, true, mEnableGCCollect ? 1 : 0);
-			internalDebugMenu.AddMenuItem("Fast Updating", null, new (menu) => { ToggleCheck(menu, ref mDbgFastUpdate); EnableGCCollect = mDbgFastUpdate; }, null, null, true, mDbgFastUpdate ? 1 : 0);
-			internalDebugMenu.AddMenuItem("Alloc String", null, new (menu) => { new String("Alloc String"); });
-			internalDebugMenu.AddMenuItem("Perform Long Update Checks", null, new (menu) =>
-                {
-					bool wantsLongUpdateCheck = mLongUpdateProfileId != 0;
-                    ToggleCheck(menu, ref wantsLongUpdateCheck);
-					mLastLongUpdateCheck = 0;
-					mLastLongUpdateCheckError = 0;
-					if (wantsLongUpdateCheck)
-						mLongUpdateProfileId = Profiler.StartSampling("LongUpdate");
-					else
-					{
-						mLongUpdateProfileId.Dispose();
-						mLongUpdateProfileId = 0;
-					}
-                }, null, null, true, (mLongUpdateProfileId != 0) ? 1 : 0);
+			if (mSettings.mEnableDevMode)
+			{
+				var internalDebugMenu = subMenu.AddMenuItem("Internal");
+				internalDebugMenu.AddMenuItem("Error Test", null, new (menu) => { DoErrorTest(); } );
+				internalDebugMenu.AddMenuItem("Reconnect BeefPerf", null, new (menu) => { BeefPerf.RetryConnect(); } );
+	            AddMenuItem(internalDebugMenu, "Report Memory", "Report Memory");
+				internalDebugMenu.AddMenuItem("Crash", null, new (menu) => { Runtime.FatalError("Bad"); });
+				internalDebugMenu.AddMenuItem("Exit Test", null, new (menu) => { ExitTest(); });
+				internalDebugMenu.AddMenuItem("Run Test", null, new (menu) => { mRunTest = !mRunTest; });
+				internalDebugMenu.AddMenuItem("GC Collect", null, new (menu) =>
+	                {
+	                    var profileId = Profiler.StartSampling().GetValueOrDefault();
+						for (int i < 10)
+							GC.Collect(false);
+						if (profileId != 0)
+							profileId.Dispose();
+	                });
+				internalDebugMenu.AddMenuItem("Enable GC Collect", null, new (menu) => { ToggleCheck(menu, ref mEnableGCCollect); EnableGCCollect = mEnableGCCollect; }, null, null, true, mEnableGCCollect ? 1 : 0);
+				internalDebugMenu.AddMenuItem("Fast Updating", null, new (menu) => { ToggleCheck(menu, ref mDbgFastUpdate); EnableGCCollect = mDbgFastUpdate; }, null, null, true, mDbgFastUpdate ? 1 : 0);
+				internalDebugMenu.AddMenuItem("Alloc String", null, new (menu) => { new String("Alloc String"); });
+				internalDebugMenu.AddMenuItem("Perform Long Update Checks", null, new (menu) =>
+	                {
+						bool wantsLongUpdateCheck = mLongUpdateProfileId != 0;
+	                    ToggleCheck(menu, ref wantsLongUpdateCheck);
+						mLastLongUpdateCheck = 0;
+						mLastLongUpdateCheckError = 0;
+						if (wantsLongUpdateCheck)
+							mLongUpdateProfileId = Profiler.StartSampling("LongUpdate");
+						else
+						{
+							mLongUpdateProfileId.Dispose();
+							mLongUpdateProfileId = 0;
+						}
+	                }, null, null, true, (mLongUpdateProfileId != 0) ? 1 : 0);
+			}
 
 			//////////
 

+ 11 - 2
IDE/src/Settings.bf

@@ -638,6 +638,7 @@ namespace IDE
 		public KeySettings mKeySettings = new .() ~ delete _;
 		public RecentFiles mRecentFiles = new RecentFiles() ~ delete _;
 		public String mWakaTimeKey = new .() ~ delete _;
+		public bool mEnableDevMode;
 
 		public this()
 		{
@@ -691,7 +692,11 @@ namespace IDE
 				}
 			}
 
-			sd.Add("WakaTimeKey", mWakaTimeKey);
+			using (sd.CreateObject("Options"))
+			{
+				sd.Add("WakaTimeKey", mWakaTimeKey);
+				sd.Add("EnableDevMode", mEnableDevMode);
+			}
 
 			String dataStr = scope String();
 			sd.ToTOML(dataStr);
@@ -736,7 +741,11 @@ namespace IDE
 				}
 			}
 
-			sd.Get("WakaTimeKey", mWakaTimeKey);
+			using (sd.Open("Options"))
+			{
+				sd.Get("WakaTimeKey", mWakaTimeKey);
+				sd.Get("EnableDevMode", ref mEnableDevMode);
+			}
 		}
 
 		public void Apply()

+ 8 - 1
IDEHelper/Compiler/BfExprEvaluator.cpp

@@ -14824,12 +14824,19 @@ BfTypedValue BfExprEvaluator::SetupNullConditional(BfTypedValue thisValue, BfTok
 	return thisValue;
 }
 
+void BfExprEvaluator::CheckDotToken(BfTokenNode* tokenNode)
+{
+	if ((tokenNode != NULL) && (tokenNode->mToken == BfToken_DotDot))
+		mModule->Fail("Unexpected cascade operation. Chaining can only be used for method invocations", tokenNode);
+}
+
 void BfExprEvaluator::DoMemberReference(BfMemberReferenceExpression* memberRefExpr, BfTypedValue* outCascadeValue)
 {
+	CheckDotToken(memberRefExpr->mDotToken);
+
 	BfAttributeState attributeState;
 	attributeState.mTarget = (BfAttributeTargets)(BfAttributeTargets_MemberAccess);
 	
-
 	String findName;
 	BfAstNode* nameRefNode = memberRefExpr->mMemberName;
 	if (auto attrIdentifierExpr = BfNodeDynCast<BfAttributedIdentifierNode>(memberRefExpr->mMemberName))

+ 1 - 0
IDEHelper/Compiler/BfExprEvaluator.h

@@ -383,6 +383,7 @@ public:
 	void DoTypeIntAttr(BfTypeReference* typeRef, BfToken token);
 	//void InitializedSizedArray(BfTupleExpression* createExpr, BfSizedArrayType* arrayType);
 	void InitializedSizedArray(BfSizedArrayType* sizedArrayType, BfTokenNode* openToken, const BfSizedArray<BfExpression*>& values, const BfSizedArray<BfTokenNode*>& commas, BfTokenNode* closeToken, BfTypedValue* receivingValue = NULL);
+	void CheckDotToken(BfTokenNode* tokenNode);
 	void DoMemberReference(BfMemberReferenceExpression* memberRefExpr, BfTypedValue* outCascadeValue);
 
 	//////////////////////////////////////////////////////////////////////////

+ 1 - 1
IDEHelper/Compiler/BfSystem.h

@@ -1387,7 +1387,7 @@ public:
 //#define BF_WANTS_LOG_CLANG
 //#define BF_WANTS_LOG_DBGEXPR
 //#define BF_WANTS_LOG_CV
-#define BF_WANTS_LOG_DBG
+//#define BF_WANTS_LOG_DBG
 #endif
 
 #ifdef BF_WANTS_LOG

+ 2 - 0
IDEHelper/DebugManager.cpp

@@ -840,6 +840,8 @@ BF_EXPORT void BF_CALLTYPE Debugger_SetSymSrvOptions(const char* symCacheDir, co
 		{
 			String symStr = String(startStr, cPtr - startStr);
 			symStr.Trim();
+			if (symStr.EndsWith('/'))
+				symStr.Remove((int)symStr.length() - 1, 1);
 			if (!symStr.IsEmpty())
 				symServers.Add(symStr);
 			startStr = cPtr;