当前位置: 首页>>代码示例>>C#>>正文


C# BlockExpression.ContainsAnnotation方法代码示例

本文整理汇总了C#中Boo.Lang.Compiler.Ast.BlockExpression.ContainsAnnotation方法的典型用法代码示例。如果您正苦于以下问题:C# BlockExpression.ContainsAnnotation方法的具体用法?C# BlockExpression.ContainsAnnotation怎么用?C# BlockExpression.ContainsAnnotation使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Boo.Lang.Compiler.Ast.BlockExpression的用法示例。


在下文中一共展示了BlockExpression.ContainsAnnotation方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: OnBlockExpression

		public override void OnBlockExpression(BlockExpression node)
		{
			AnonymousMethodReturnType amrt = new AnonymousMethodReturnType(cu);
			if (node.ReturnType != null) {
				amrt.MethodReturnType = ConvertType(node.ReturnType);
			} else {
				amrt.MethodReturnType = new BooInferredReturnType(node.Body, resolver.CallingClass,
				                                               node.ContainsAnnotation("inline"));
			}
			amrt.MethodParameters = new List<IParameter>();
			ConvertVisitor.AddParameters(node.Parameters, amrt.MethodParameters, resolver.CallingMember, resolver.CallingClass ?? new DefaultClass(resolver.CompilationUnit, "__Dummy"));
			MakeResult(amrt);
		}
开发者ID:Bombadil77,项目名称:SharpDevelop,代码行数:13,代码来源:ResolveVisitor.cs

示例2: ProcessClosureBody

        void ProcessClosureBody(BlockExpression node)
        {
            MarkVisited(node);
            if (node.ContainsAnnotation("inline"))
                AddOptionalReturnStatement(node.Body);

            var explicitClosureName = node[BlockExpression.ClosureNameAnnotation] as string;

            Method closure = CodeBuilder.CreateMethod(
                ClosureName(explicitClosureName),
                node.ReturnType ?? CodeBuilder.CreateTypeReference(Unknown.Default),
                ClosureModifiers());

            MarkVisited(closure);

            var closureEntity = (InternalMethod)closure.Entity;
            closure.LexicalInfo = node.LexicalInfo;
            closure.Parameters = node.Parameters;
            closure.Body = node.Body;

            CurrentMethod.DeclaringType.Members.Add(closure);

            CodeBuilder.BindParameterDeclarations(_currentMethod.IsStatic, closure);

            // check for invalid names and
            // resolve parameter types
            Visit(closure.Parameters);

            // Inside the closure, connect the closure method namespace with the current namespace
            var ns = new NamespaceDelegator(CurrentNamespace, closureEntity);

            // Allow closure body to reference itself using its explicit name (BOO-1085)
            if (explicitClosureName != null)
                ns.DelegateTo(new AliasedNamespace(explicitClosureName, closureEntity));

            ProcessMethodBody(closureEntity, ns);

            if (closureEntity.ReturnType is Unknown)
                TryToResolveReturnType(closureEntity);

            node.ExpressionType = closureEntity.Type;
            node.Entity = closureEntity;
        }
开发者ID:stuman08,项目名称:boo,代码行数:43,代码来源:ProcessMethodBodies.cs

示例3: OnBlockExpression

        public override void OnBlockExpression(BlockExpression node)
        {
            if (WasVisited(node)) return;
            MarkVisited(node);

            Method closure = CodeBuilder.CreateMethod(
                ClosureNameFor(node),
                Unknown.Default,
                ClosureModifiers());

            MarkVisited(closure);

            InternalMethod closureEntity = (InternalMethod)closure.Entity;
            closure.LexicalInfo = node.LexicalInfo;
            closure.Parameters = node.Parameters;
            closure.Body = node.Body;

            _currentMethod.Method.DeclaringType.Members.Add(closure);

            CodeBuilder.BindParameterDeclarations(_currentMethod.IsStatic, closure);

            // check for invalid names and
            // resolve parameter types
            Visit(closure.Parameters);

            if (node.ContainsAnnotation("inline"))
            {
                AddOptionalReturnStatement(node.Body);
            }

            // Connects the closure method namespace with the current
            NamespaceDelegator ns = new NamespaceDelegator(CurrentNamespace, closureEntity);
            ProcessMethodBody(closureEntity, ns);
            TryToResolveReturnType(closureEntity);

            node.ExpressionType = closureEntity.Type;
            node.Entity = closureEntity;
        }
开发者ID:w4x,项目名称:boolangstudio,代码行数:38,代码来源:ProcessMethodBodies.cs


注:本文中的Boo.Lang.Compiler.Ast.BlockExpression.ContainsAnnotation方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。