IronRuby.Compiler.Ast.ModuleDefinition.MakeDefinitionExpression C# (CSharp) Method

MakeDefinitionExpression() private method

private MakeDefinitionExpression ( AstGenerator gen ) : Expression
gen AstGenerator
return System.Linq.Expressions.Expression
        internal virtual MSA.Expression/*!*/ MakeDefinitionExpression(AstGenerator/*!*/ gen) {
            MSA.Expression transformedQualifier;
            MSA.Expression name = QualifiedName.TransformName(gen);

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

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

                case StaticScopeKind.Explicit:
                    return Methods.DefineModule.OpCall(gen.CurrentScopeVariable, AstUtils.Box(transformedQualifier), name);
            }

            throw Assert.Unreachable;
        }