예제 #1
0
파일: ThenElse.cs 프로젝트: hahoyer/reni.cs
        Result BranchResult(ContextBase context, Category category, Value syntax)
        {
            var result = context.Result(category.Typed, syntax);
            if(result == null)
                return null;

            var branchResult = result;

            var commonType = CommonType(context);
            return branchResult.Type
                .Conversion(category.Typed, commonType)
                .ReplaceArg(branchResult)
                & category;
        }
예제 #2
0
 protected override Result Result(ContextBase context, Category category, Value left)
     => context.Result(category.Typed, left)
         .Type
         .FunctionInstance
         .Result(category, context.Result(category.Typed, left));
예제 #3
0
파일: ThenElse.cs 프로젝트: hahoyer/reni.cs
 Result CondResult(ContextBase context, Category category)
     => context.Result(category.Typed, Cond)
         .Conversion(context.RootContext.BitType.Align)
         .LocalBlock(category.Typed)
         .Conversion(context.RootContext.BitType);
예제 #4
0
        internal Result Cleanup(ContextBase context, Category category)
        {
            if(CleanupSection != null && (category.HasCode || category.HasExts))
                return context
                    .Result(category.Typed, CleanupSection)
                    .Conversion(context.RootContext.VoidType)
                    .LocalBlock(category) & category;

            return context.RootContext.VoidType.Result(category);
        }