From 8c60949ec9d6f803a5b6f9c7a11cd85825791f43 Mon Sep 17 00:00:00 2001 From: Michael Schimmel Date: Thu, 11 Dec 2025 14:31:25 +0100 Subject: [PATCH] RTL custom interface types as records --- Src/AST/Myc.Ast.RTL.TypeRegistry.pas | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/Src/AST/Myc.Ast.RTL.TypeRegistry.pas b/Src/AST/Myc.Ast.RTL.TypeRegistry.pas index 50ea1a0..874897d 100644 --- a/Src/AST/Myc.Ast.RTL.TypeRegistry.pas +++ b/Src/AST/Myc.Ast.RTL.TypeRegistry.pas @@ -113,15 +113,20 @@ end; class procedure TRtlTypeRegistry.RegisterType(Info: PTypeInfo); begin - if FKnownTypes.ContainsKey(Info) then - exit; - - EnterAnalysis(Info); + TMonitor.Enter(FKnownTypes); try - var staticType := AnalyzeType(Info); - FKnownTypes.Add(Info, staticType); + if FKnownTypes.ContainsKey(Info) then + exit; + + EnterAnalysis(Info); + try + var staticType := AnalyzeType(Info); + FKnownTypes.Add(Info, staticType); + finally + ExitAnalysis(Info); + end; finally - ExitAnalysis(Info); + TMonitor.Exit(FKnownTypes); end; end;