diff --git a/src/compiler/OptTree-Spec.ref b/src/compiler/OptTree-Spec.ref index d01431a3..28176a95 100644 --- a/src/compiler/OptTree-Spec.ref +++ b/src/compiler/OptTree-Spec.ref @@ -669,7 +669,7 @@ SpecCall-Aux { (e.Name) (e.SpecPattern) (e.Body) s.NextNumber e.Signatures (e.OldArg) (e.NewArg) (e.Sg) (e.Solutions) (e.History) s.NeedRelationCheck - , : True + , : True = ((e.SpecPattern) (e.Body) s.NextNumber e.Signatures) (CallBrackets (Symbol Name e.Name) e.OldArg) /* пусто */ (/* пусто */); @@ -1006,9 +1006,55 @@ RemoveLastGhostBracket { } IsTrivialSignature { - e.Arg, e.Arg : (Var 'e' e._) = True; + e.Arg (e.Body), : False = False (e.Arg) (e.Body); + e.Arg (e.Body) = ; +} + +DoIsTrivialSignature { + e.Arg (e.ScannedSentences) (/* кончились предложения */) + = True (e.Arg) (e.ScannedSentences); + + e.Arg (e.ScannedSentences) (((e.Pattern) e.Tail) e.Sentences) + , : Clear e._ + = ; + + e.Arg (e.ScannedSentences) (e.Sentences) + = False (e.Arg) (e.ScannedSentences e.Sentences); +} + +IsHardExpr { + e.Expr + , + : { + e._ OpenE e._ = False; + e._ Closure e._ = False; + e._ (s.Mode e.Index) e._ (s.Mode e.Index) e._ = False; + e._ = True; + } +} - e.Arg = False; +/* + == t.IsHardExpr-Aux* + t.IsHardExpr-Aux ::= OpenE | (s.Mode e.Index) | Closure +*/ +IsHardExpr-Aux { + e.Expr-B (Var 'e' e.Index1) e.Expr-M (Var 'e' e.Index2) e.Expr-E = OpenE; + + e.Expr + = ; + (ADT-Brackets (e.Name) e.InBrackets) = ; + (ClosureBrackets e._) = Closure; + + t.Other = /* пропускаем */; + } + e.Expr + >; } OrderUniqueVars {