IronRuby.Compiler.Ast.AstGenerator.TryCatchAny C# (CSharp) Method

TryCatchAny() private method

private TryCatchAny ( System.Linq.Expressions tryBody, System.Linq.Expressions catchBody ) : Expression
tryBody System.Linq.Expressions
catchBody System.Linq.Expressions
return System.Linq.Expressions.Expression
        internal MSA.Expression/*!*/ TryCatchAny(MSA.Expression/*!*/ tryBody, MSA.Expression/*!*/ catchBody) {
            var variable = CurrentScope.DefineHiddenVariable("#value", tryBody.Type);

            return
                Ast.Block(
                    Ast.TryCatch(
                        Ast.Assign(variable, tryBody),
                        Ast.Catch(typeof(Exception), 
                            Ast.Assign(variable, catchBody)
                        )
                    ),
                    variable
                );
        }
    }

Usage Example

示例#1
0
        private MSA.Expression /*!*/ TransformRead(AstGenerator /*!*/ gen, int /*!*/ opKind)
        {
            MSA.Expression transformedName = TransformName(gen);
            MSA.Expression transformedQualifier;

            switch (TransformQualifier(gen, out transformedQualifier))
            {
            case StaticScopeKind.Global:
                return((opKind == OpGet ? Methods.GetGlobalConstant : Methods.IsDefinedGlobalConstant).
                       OpCall(gen.CurrentScopeVariable, transformedName));

            case StaticScopeKind.EnclosingModule:
                return((opKind == OpGet ? Methods.GetUnqualifiedConstant : Methods.IsDefinedUnqualifiedConstant).
                       OpCall(gen.CurrentScopeVariable, transformedName));

            case StaticScopeKind.Explicit:
                if (opKind == OpGet)
                {
                    return(Methods.GetQualifiedConstant.OpCall(AstFactory.Box(transformedQualifier), gen.CurrentScopeVariable, transformedName));
                }
                else
                {
                    return(gen.TryCatchAny(
                               Methods.IsDefinedQualifiedConstant.OpCall(AstFactory.Box(transformedQualifier), gen.CurrentScopeVariable, transformedName),
                               Ast.Constant(false)
                               ));
                }
            }

            throw Assert.Unreachable;
        }
All Usage Examples Of IronRuby.Compiler.Ast.AstGenerator::TryCatchAny