예제 #1
0
        protected override Action <ITextControl> ExecutePsiTransaction(ISolution solution, IProgressIndicator progress)
        {
            ITypeDeclaration typeDeclaration = GetTargetTypeDeclaration(_highlighting.BaseClass);

            if (typeDeclaration == null)
            {
                return(null);
            }

            MemberSignature signature = CreateTransformTextSignature(typeDeclaration);
            TypeTarget      target    = CreateTarget(typeDeclaration);

            var context = new CreateMethodDeclarationContext {
                AccessRights = AccessRights.PUBLIC,
                ExecuteTemplateOverMemberBody = false,
                ExecuteTemplateOverName       = false,
                ExecuteTemplateOverParameters = false,
                ExecuteTemplateOverReturnType = false,
                IsAbstract       = true,
                IsStatic         = false,
                MethodSignatures = new[] { signature },
                MethodName       = T4CSharpIntermediateConverterBase.TransformTextMethodName,
                SourceReferenceExpressionReference = null,
                Target = target,
            };

            IntentionResult intentionResult = MethodDeclarationBuilder.Create(context);

            intentionResult.ExecuteTemplate();
            return(null);
        }
예제 #2
0
        public void WhenMethodIsProvided_ClassIsBuilt_MethodBodyThrowsNotImplemented()
        {
            var method = new MethodDeclarationBuilder("TimeoutAfter")
                         .WithReturnType("TimeSpan")
                         .Build();
            //implement method builder return null

            TypeDeclarationSyntax classResult = new ClassBuilder()
                                                .WithDefinition("test", "testBase")
                                                .WithMethodDeclarations(new MethodDeclaration[] { method })
                                                .Build();

            Assert.EndsWith($"{method.ReturnType}{method.Name}(){{thrownewNotImplementedException();}}}}", classResult.ToFullString());
        }
        public void WhenMethodIsProvided_WhenInterfaceIsBuilt_MethodIsPresent()
        {
            var method = new MethodDeclarationBuilder("TimeoutAfter")
                         .WithReturnType("TimeSpan")
                         .Build();

            TypeDeclarationSyntax interfaceResult = new InterfaceBuilder()
                                                    .WithDefinition("test", "testBase")
                                                    .WithMethodDeclarations(new MethodDeclaration[] { method })
                                                    .Build();

            Console.WriteLine(interfaceResult);
            Assert.EndsWith($"{method.ReturnType}{method.Name}();}}", interfaceResult.ToFullString());
        }
예제 #4
0
        public void WhenMethodIsProvided_ClassIsBuilt_MethodBodyUsesArrowFunction()
        {
            var method = new MethodDeclarationBuilder("TimeoutAfter")
                         .WithReturnType("TimeSpan")
                         .Build();
            //implement method builder return null

            TypeDeclarationSyntax classResult = new ClassBuilder()
                                                .WithDefinition("test", "testBase")
                                                .WithMethodDeclarations(new MethodDeclaration[] { method })
                                                .Build();

            Console.WriteLine(classResult);
            Assert.EndsWith($"{method.ReturnType}{method.Name}()=>null;}}", classResult.ToFullString());
        }
예제 #5
0
        public void WhenMethodIsProvided_ClassIsBuilt_MethodHasParameters()
        {
            var method = new MethodDeclarationBuilder("TimeoutAfter")
                         .WithReturnType("TimeSpan")
                         .WithParameter(new Parameter("testParam", "string"))
                         .Build();
            //implement method builder return null

            TypeDeclarationSyntax classResult = new ClassBuilder()
                                                .WithDefinition("test", "testBase")
                                                .WithMethodDeclarations(new MethodDeclaration[] { method })
                                                .Build();

            Console.WriteLine(classResult);
            var parameter = $"{method.Parameters[0].Type}{method.Parameters[0].Name}";

            Assert.EndsWith($"{method.ReturnType}{method.Name}({parameter}){{thrownewNotImplementedException();}}}}", classResult.ToFullString());
        }