protected override IDom CreateItemFrom(SyntaxNode syntaxNode, IDom parent, SemanticModel model) { var syntax = syntaxNode as ParameterSyntax; var newItem = new RDomParameter(syntaxNode, parent, model); CreateFromWorker.StandardInitialize(newItem, syntaxNode, parent, model, OutputContext); newItem.Name = newItem.TypedSymbol.Name; // TODO: Determine if null types for anonymous methods are a fact of life, or a temporary bug if (syntax.Type != null) { var type = OutputContext.Corporation .Create(syntax.Type, newItem, model) .FirstOrDefault() as IReferencedType; newItem.Type = type; } newItem.IsOut = newItem.TypedSymbol.RefKind == RefKind.Out; newItem.IsRef = newItem.TypedSymbol.RefKind == RefKind.Ref; newItem.IsParamArray = newItem.TypedSymbol.IsParams; newItem.IsOptional = newItem.TypedSymbol.IsOptional; if (syntax.Default != null) { var tuple = CreateFromWorker.GetArgumentValue(newItem, model, syntax.Default.Value); newItem.DefaultValue = tuple.Item1; newItem.DefaultConstantIdentifier = tuple.Item2; newItem.DefaultValueType = tuple.Item3; } newItem.Ordinal = newItem.TypedSymbol.Ordinal; MemberWhitespace(newItem, syntax); return(newItem); }
private Tuple <object, string, LiteralKind> GetAttributeValueValue( SyntaxNode argNode, IDom newItem, SemanticModel model) { var arg = argNode as AttributeArgumentSyntax; Guardian.Assert.IsNotNull(arg, nameof(arg)); // TODO: Manage multiple values because of AllowMultiples, param array, or missing symbol var expr = arg.Expression; return(CreateFromWorker.GetArgumentValue(newItem, model, expr)); }