private void PreinitCtor(DCtorPattern node, Hints hints) { if (node.Arguments != null && node.Arguments.Count > 0) { PreinitSequence(node.Arguments, hints); } }
private void BuildCtor(DCtorPattern node, Hints hints, CompilerContext ctx) { var bad = cw.DefineLabel(); var ok = cw.DefineLabel(); cw.Dup(); var nameId = GetMemberNameId(node.Constructor); cw.CtorCheck(nameId); cw.Brfalse(bad); if (node.Arguments == null || node.Arguments.Count == 0) { cw.Pop(); cw.Push(true); } else { BuildSequence(node, node.Arguments, hints, ctx); } cw.Br(ok); cw.MarkLabel(bad); AddLinePragma(node); cw.Pop(); cw.Push(false); cw.MarkLabel(ok); }
private void BuildCtor(DCtorPattern node, Hints hints, CompilerContext ctx) { var bad = cw.DefineLabel(); var ok = cw.DefineLabel(); if (node.TypeName is not null) { cw.Dup(); PushTypeInfo(ctx, node.TypeName, node.Location); cw.TypeCheck(); cw.Brfalse(bad); } cw.Dup(); cw.CtorCheck(node.Constructor); cw.Brfalse(bad); if (node.Arguments is null || node.Arguments.Count is 0) { cw.Pop(); cw.Push(true); }