private void MemberWhitespace(RDomEnumMember newItem, EnumMemberDeclarationSyntax syntax) { //CreateFromWorker.StoreWhitespaceForToken(newItem, syntax.GetFirstToken(), LanguagePart.Current, LanguageElement.EnumValueFirstToken); //CreateFromWorker.StoreWhitespaceForToken(newItem, syntax.GetLastToken(), LanguagePart.Current, LanguageElement.EnumValueLastToken); if (syntax.EqualsValue != null) { CreateFromWorker.StoreWhitespaceForToken(newItem, syntax.EqualsValue.Value.GetLastToken(), LanguagePart.Current, LanguageElement.Expression); CreateFromWorker.StoreWhitespaceForToken(newItem, syntax.EqualsValue.EqualsToken, LanguagePart.Current, LanguageElement.EnumValueAssignOperator); } CreateFromWorker.StoreListMemberWhitespace(syntax, WhitespaceLookup.Lookup(LanguageElement.EnumValueSeparator), LanguageElement.Identifier, newItem); //var prevNodeOrToken = syntax.Parent // .ChildNodesAndTokens() // .PreviousSiblings(syntax) // .LastOrDefault(); //var sepKind = WhitespaceLookup.Lookup(LanguageElement.EnumValueSeparator); //if (prevNodeOrToken.CSharpKind() == sepKind) //{ // var commaToken = prevNodeOrToken.AsToken(); // var whitespace2 = newItem.Whitespace2Set[LanguageElement.Identifier]; // var newLeadingWhitespace = commaToken.TrailingTrivia.ToString();; // if (string.IsNullOrEmpty(whitespace2.LeadingWhitespace) // || newLeadingWhitespace.EndsWith("\r\n")) // { whitespace2.LeadingWhitespace = newLeadingWhitespace // + whitespace2.LeadingWhitespace; } //} }
private void MemberWhitespace(RDomParameter newItem, ParameterSyntax syntax) { CreateFromWorker.StoreWhitespaceForToken(newItem, syntax.GetFirstToken(), LanguagePart.Current, LanguageElement.ParameterFirstToken); CreateFromWorker.StoreWhitespaceForToken(newItem, syntax.GetLastToken(), LanguagePart.Current, LanguageElement.ParameterLastToken); CreateFromWorker.StoreWhitespace(newItem, syntax, LanguagePart.Current, WhitespaceLookup); if (syntax.Default != null) { CreateFromWorker.StoreWhitespace(newItem, syntax.Default, LanguagePart.Current, WhitespaceLookup); //CreateFromWorker.StoreWhitespaceForToken(newItem, syntax.Default.Value.GetLastToken(), LanguagePart.Current, LanguageElement.Identifier); //CreateFromWorker.StoreWhitespaceForToken(newItem, syntax.Default.EqualsToken, LanguagePart.Current, LanguageElement.ParameterDefaultAssignOperator); } CreateFromWorker.StoreListMemberWhitespace(syntax, WhitespaceLookup.Lookup(LanguageElement.ParameterSeparator), LanguageElement.ParameterFirstToken, newItem); //var prevNodeOrToken = syntax.Parent // .ChildNodesAndTokens() // .PreviousSiblings(syntax) // .LastOrDefault(); //var sepKind = WhitespaceLookup.Lookup(LanguageElement.ParameterSeparator); //if (prevNodeOrToken.CSharpKind() == sepKind) //{ // var commaToken = prevNodeOrToken.AsToken(); // var whitespace2 = newItem.Whitespace2Set[LanguageElement.ParameterFirstToken]; // if (string.IsNullOrEmpty(whitespace2.LeadingWhitespace)) // { whitespace2.LeadingWhitespace = commaToken.TrailingTrivia.ToString(); } //} }
private void MemberWhitespace(RDomArgument newItem, ArgumentSyntax syntax) { CreateFromWorker.StoreWhitespaceForToken(newItem, syntax.GetFirstToken(), LanguagePart.Current, LanguageElement.ParameterFirstToken); CreateFromWorker.StoreWhitespaceForToken(newItem, syntax.GetLastToken(), LanguagePart.Current, LanguageElement.ParameterLastToken); CreateFromWorker.StoreWhitespace(newItem, syntax, LanguagePart.Current, WhitespaceLookup); CreateFromWorker.StoreListMemberWhitespace(syntax, WhitespaceLookup.Lookup(LanguageElement.ParameterSeparator), LanguageElement.ParameterFirstToken, newItem); }
protected override IDom CreateItemFrom(SyntaxNode syntaxNode, IDom parent, SemanticModel model) { var syntax = syntaxNode as ConstructorDeclarationSyntax; var newItem = new RDomConstructor(syntaxNode, parent, model); CreateFromWorker.StandardInitialize(newItem, syntaxNode, parent, model, OutputContext); CreateFromWorker.InitializeStatements(newItem, syntax.Body, newItem, model); CreateFromWorker.StoreWhitespace(newItem, syntax, LanguagePart.Current, WhitespaceLookup); CreateFromWorker.StoreWhitespace(newItem, syntax.Initializer, LanguagePart.Initializer, WhitespaceLookup); CreateFromWorker.StoreWhitespace(newItem, syntax.Body, LanguagePart.Current, WhitespaceLookup); CreateFromWorker.StoreWhitespace(newItem, syntax.ParameterList, LanguagePart.Current, WhitespaceLookup); newItem.Name = newItem.TypedSymbol.Name; //newItem.AccessModifier = RoslynUtilities.GetAccessibilityFromSymbol(newItem.Symbol); //newItem.IsStatic = newItem.Symbol.IsStatic; newItem.Parameters.CreateAndAdd(syntax, x => x.ParameterList.Parameters, x => OutputContext.Corporation.Create(x, newItem, model).Cast <IParameter>()); //var parameters = ListUtilities.MakeList(syntax, x => x.ParameterList.Parameters, x => Corporation.Create(x, newItem, model)) // .OfType<IParameter>(); //newItem.Parameters.AddOrMoveRange(parameters); if (syntax.Initializer == null) { newItem.ConstructorInitializerType = ConstructorInitializerType.None; } else { var initializerSyntax = syntax.Initializer; if (initializerSyntax.ThisOrBaseKeyword.ToString() == "this") { newItem.ConstructorInitializerType = ConstructorInitializerType.This; } else { newItem.ConstructorInitializerType = ConstructorInitializerType.Base; } CreateFromWorker.StoreWhitespace(newItem, initializerSyntax.ArgumentList, LanguagePart.Initializer, WhitespaceLookup); foreach (var arg in initializerSyntax.ArgumentList.Arguments) { var newArg = new RDomArgument(arg, newItem, model); // TODO: Named paramters and align this with the invocation factory newArg.ValueExpression = OutputContext.Corporation.CreateSpecial <IExpression>(arg.Expression, newItem, model).FirstOrDefault(); CreateFromWorker.StoreWhitespaceForFirstAndLastToken(newArg, arg, LanguagePart.Current, LanguageElement.ConstructorInitializerArgument); CreateFromWorker.StoreListMemberWhitespace(arg, SyntaxKind.CommaToken, LanguageElement.ConstructorInitializerArgument, newArg); newItem.InitializationArguments.AddOrMove(newArg); } } return(newItem); }
private void StoreConstraintWhitespace(TypeConstraintSyntax syntax, IReferencedType newItem) { CreateFromWorker.StoreListMemberWhitespace(syntax, SyntaxKind.CommaToken, LanguageElement.Identifier, newItem); //var whitespace2 = newItem.Whitespace2Set[LanguageElement.Identifier]; //if (string.IsNullOrEmpty(whitespace2.LeadingWhitespace)) //{ // var prevNodeOrToken = syntax.Parent // .ChildNodesAndTokens() // .PreviousSiblings(syntax) // .LastOrDefault(); // var sepKind = SyntaxKind.CommaToken; // if (prevNodeOrToken.Kind() == sepKind) // { // var commaToken = prevNodeOrToken.AsToken(); // whitespace2.LeadingWhitespace = commaToken.TrailingTrivia.ToString(); // } //} }
private void StoreWhitespace(RDomAttributeValue newItem, AttributeArgumentSyntax syntax) { // TODO: I feel like I'm working too hard here. Try creating a WhitespaceLookup and see how much of this is done in a standard StoreWhitespace if (syntax.NameColon != null) { StoreWhitespaceForNamed(newItem, syntax, syntax.NameColon.Name.Identifier, syntax.NameColon.ColonToken); } else if (syntax.NameEquals != null) { StoreWhitespaceForNamed(newItem, syntax, syntax.NameEquals.Name.Identifier, syntax.NameEquals.EqualsToken); } else { CreateFromWorker.StoreWhitespaceForFirstAndLastToken(newItem, syntax, LanguagePart.Current, LanguageElement.AttributeValueValue); } CreateFromWorker.StoreListMemberWhitespace(syntax, SyntaxKind.CommaToken, LanguageElement.AttributeValueValue, newItem); }
private void MemberWhitespace(RDomTypeParameter newItem, TypeParameterSyntax syntax) { CreateFromWorker.StoreWhitespace(newItem, syntax, LanguagePart.Current, WhitespaceLookup); CreateFromWorker.StoreListMemberWhitespace(syntax, SyntaxKind.CommaToken, LanguageElement.Identifier, newItem); //var whitespace2 = newItem.Whitespace2Set[LanguageElement.Identifier]; //if (string.IsNullOrEmpty(whitespace2.LeadingWhitespace)) //{ // var prevNodeOrToken = syntax.Parent // .ChildNodesAndTokens() // .PreviousSiblings(syntax) // .LastOrDefault(); // var sepKind = SyntaxKind.CommaToken; // if (prevNodeOrToken.Kind() == sepKind) // { // var commaToken = prevNodeOrToken.AsToken(); // whitespace2.LeadingWhitespace = commaToken.TrailingTrivia.ToString(); // } //} }
private void StoreConstructorConstraint(ConstructorConstraintSyntax syntax, RDomTypeParameter newItem) { newItem.HasConstructorConstraint = true; CreateFromWorker.StoreWhitespaceForFirstAndLastToken(newItem, syntax, LanguagePart.Current, LanguageElement.ConstructorConstraint); CreateFromWorker.StoreListMemberWhitespace(syntax, SyntaxKind.CommaToken, LanguageElement.ConstructorConstraint, newItem); //var whitespace2 = newItem.Whitespace2Set[LanguageElement.ConstructorConstraint]; //if (string.IsNullOrEmpty(whitespace2.LeadingWhitespace)) //{ // var prevNodeOrToken = syntax.Parent // .ChildNodesAndTokens() // .PreviousSiblings(syntax) // .LastOrDefault(); // var sepKind = SyntaxKind.CommaToken; // if (prevNodeOrToken.Kind() == sepKind) // { // var commaToken = prevNodeOrToken.AsToken(); // whitespace2.LeadingWhitespace = commaToken.TrailingTrivia.ToString(); // } //} }