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; }
            //}
        }
Ejemplo n.º 2
0
        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(); }
            //}
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 5
0
 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);
        }
Ejemplo n.º 7
0
 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();
     //   }
     //}
 }
Ejemplo n.º 8
0
 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();
     //   }
     //}
 }