コード例 #1
0
        public void AddParameter(ParameterSymbol parameterSymbol) {
            Debug.Assert(parameterSymbol != null);

            if (_parameters == null) {
                _parameters = new List<ParameterSymbol>();
            }
            _parameters.Add(parameterSymbol);
        }
コード例 #2
0
        private static void GenerateParameterComment(ScriptTextWriter writer, ParameterSymbol parameterSymbol) {
            writer.Write("/// <param name=\"{0}\"", parameterSymbol.GeneratedName);

            GenerateTypeAttributes(writer, parameterSymbol.ValueType);

            writer.WriteLine(">");

            GenerateFormattedComment(writer, parameterSymbol.Documentation);

            writer.WriteLine("/// </param>");
        }
コード例 #3
0
ファイル: EventSymbol.cs プロジェクト: fugaku/scriptsharp
 public EventSymbol(string name, TypeSymbol parent, TypeSymbol handlerType)
     : base(SymbolType.Event, name, parent, handlerType) {
     ParameterSymbol valueParameter = new ParameterSymbol("value", this, handlerType, ParameterMode.In);
     AddParameter(valueParameter);
 }
コード例 #4
0
        private Expression ProcessAnonymousMethodNode(AnonymousMethodNode node) {
            TypeSymbol voidType = _symbolSet.ResolveIntrinsicType(IntrinsicType.Void);
            Debug.Assert(voidType != null);

            bool createStaticDelegate = (_memberContext.Visibility & MemberVisibility.Static) != 0;

            AnonymousMethodSymbol methodSymbol =
                new AnonymousMethodSymbol(_memberContext, _symbolTable, voidType, createStaticDelegate);
            methodSymbol.SetParseContext(node);

            if ((node.Parameters != null) && (node.Parameters.Count != 0)) {
                foreach (ParameterNode parameterNode in node.Parameters) {
                    TypeSymbol parameterType = _symbolSet.ResolveType(parameterNode.Type, _symbolTable, _symbolContext);
                    Debug.Assert(parameterType != null);

                    ParameterSymbol paramSymbol =
                        new ParameterSymbol(parameterNode.Name, methodSymbol, parameterType, ParameterMode.In);
                    if (paramSymbol != null) {
                        paramSymbol.SetParseContext(parameterNode);
                        methodSymbol.AddParameter(paramSymbol);
                    }
                }
            }

            ImplementationBuilder implBuilder = new ImplementationBuilder(_options, _errorHandler);
            SymbolImplementation implementation = implBuilder.BuildMethod(methodSymbol);

            methodSymbol.AddImplementation(implementation);

            if ((createStaticDelegate == false) && (implementation.RequiresThisContext == false)) {
                methodSymbol.SetVisibility(methodSymbol.Visibility | MemberVisibility.Static);
                createStaticDelegate = true;
            }

            Expression objectExpression;
            if (createStaticDelegate) {
                TypeSymbol objectType = _symbolSet.ResolveIntrinsicType(IntrinsicType.Object);
                Debug.Assert(objectType != null);

                objectExpression = new LiteralExpression(objectType, null);
            }
            else {
                objectExpression = new ThisExpression(_classContext, /* explicitReference */ true);
            }

            return new DelegateExpression(objectExpression, methodSymbol);
        }
コード例 #5
0
 private void DumpParameter(ParameterSymbol parameterSymbol)
 {
     _writer.Write("AssociatedType: ");
     _writer.WriteLine(parameterSymbol.ValueType.FullName);
     _writer.Write("Mode: ");
     _writer.WriteLine(parameterSymbol.Mode.ToString());
 }