From 9b2d89e5659df40f27717c8c00f056a3054c095a Mon Sep 17 00:00:00 2001 From: Baklanov Lev Date: Sun, 28 Feb 2021 04:24:12 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=B8=20=D0=B2=D1=8B=D0=B4=D0=B0=D1=87=D0=B0=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B5=D0=B4=D1=83=D0=BF=D1=80=D0=B5=D0=B6=D0=B4=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B9=20(#290)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/compiler/Checker.ref | 59 ++++++++++++++++++++++++++++++++++------ 1 file changed, 50 insertions(+), 9 deletions(-) diff --git a/src/compiler/Checker.ref b/src/compiler/Checker.ref index 87b68d75..ea4343f0 100644 --- a/src/compiler/Checker.ref +++ b/src/compiler/Checker.ref @@ -870,12 +870,12 @@ FlatExpr { CheckPattern { (e.ScopeVars) (e.Pattern) e.Flag - = - (e.Pattern) - > - >; + = > + + (e.Pattern) + >; } CheckPattern-WarnRepeated { @@ -892,7 +892,29 @@ CheckPattern-WarnRepeatedRec { >; - e.Any = /* временная заглушка */; + + (e.ScopeVars) s.WarningId ((TkVariable e.Info) e.Tail) + = + ; + + (e.ScopeVars) s.WarningId ((TkNewVariable e.Info) e.Tail) + = ; + + (e.ScopeVars) s.WarningId ((Symbol e.Info) e.Tail) + = ; + + (e.ScopeVars) s.WarningId ((Brackets e.InBrackets) e.Tail) + = + ; + + (e.ScopeVars) s.WarningId ((ADT-Brackets t.SrcPos (e.Name) e.InBrackets) e.Tail) + = + ; + + (e.ScopeVars) s.WarningId ((TkVariable t.Pos s.Mode e.Index)) + = ; + + (e.ScopeVars) s.WarningId () = /* временная заглушка */; } @@ -917,19 +939,31 @@ FindLastE { ReplaceInterval { t.LastElem e.B (TkVariable t.Pos 'e' e.Index) e.M t.LastElem e.E - = e.B (TkVariable t.Pos 'e' '_') e.E; + = (e.B (TkVariable t.Pos 'e' '_') e.E); } -GetWarningIdByFlag { +WarningIdByFlag { LastSentenceFlag = RepeatedVariableMaybe; AssignmentFlag = RepeatedVariable; /* пусто */ = /* пусто */; } CheckVariableRepeating { + (e.ScopeVars) s.WarningId (TkVariable t.SrcPos s.Mode '_' e.Index) = ; + + (e.Vars-B (s.Mode e.Index) e.Vars-E) s.WarningId + (TkVariable t.SrcPos s.Mode e.Index) + = (Warning + t.SrcPos s.WarningId s.Mode e.Index); + e._ = ; } +WarningNameForId { + RepeatedVariable = repeated; + RepeatedVariableMaybe = repeated-maybe; +} + CheckPattern-Flatten { (e.ScopeVars) e.Items-B (TkNewVariable t.SrcPos s.Mode '_' e.Index) e.Items-E = ; + (e.DeclarationsAndErrors) + (Warning s.WarningId t.SrcPos s.Type e.Info) e.NameRefsAndErrors = + ; + (e.DeclarationsAndErrors) /* кончились ошибки и имена */ =