IronRuby.Compiler.Ast.ClassDefinition.MakeDefinitionExpression C# (CSharp) Метод

MakeDefinitionExpression() приватный Метод

private MakeDefinitionExpression ( AstGenerator gen ) : Expression
gen AstGenerator
Результат System.Linq.Expressions.Expression
        internal override MSA.Expression/*!*/ MakeDefinitionExpression(AstGenerator/*!*/ gen) {
            MSA.Expression transformedQualifier;
            MSA.Expression name = QualifiedName.TransformName(gen);
            MSA.Expression transformedSuper = (_superClass != null) ? AstUtils.Box(_superClass.TransformRead(gen)) : AstUtils.Constant(null);

            switch (QualifiedName.TransformQualifier(gen, out transformedQualifier)) {
                case StaticScopeKind.Global:
                    return Methods.DefineGlobalClass.OpCall(gen.CurrentScopeVariable, name, transformedSuper);

                case StaticScopeKind.EnclosingModule:
                    return Methods.DefineNestedClass.OpCall(gen.CurrentScopeVariable, name, transformedSuper);

                case StaticScopeKind.Explicit:
                    return Methods.DefineClass.OpCall(gen.CurrentScopeVariable, transformedQualifier, name, transformedSuper);
            }

            throw Assert.Unreachable;
        }
    }