protected ErrorKind CheckForJumpInstructions(MethodDeclaration method)
        {
            FindJumpInstructionsVisitor fjiv = new FindJumpInstructionsVisitor(method);

            method.AcceptVisitor(fjiv, null);
            return(fjiv.DoCheck());
        }
//		public void InsertCall()
//		{
//			string call = GenerateCode(CreateCaller(this.parentMethod, this.extractedMethod, this.returnedVariable), false);
//			StringBuilder builder = new StringBuilder();
//
//			foreach (LocalVariableDeclaration v in this.beforeCallDeclarations) {
//				builder.AppendLine(GenerateCode(v, false));
//			}
//
//			this.currentDocument.Replace(this.currentSelection.Offset, this.currentSelection.Length, builder.ToString() + "\r\n" + call);
//		}
//
//		public void InsertAfterCurrentMethod()
//		{
//			IOutputAstVisitor outputVisitor = this.GetOutputVisitor();
//
//			using (SpecialNodesInserter.Install(this.specialsList, outputVisitor)) {
//				string code = "\r\n\r\n" + GenerateCode(this.extractedMethod, true);
//
//				code = code.TrimEnd('\r', '\n', ' ', '\t');
//
//				Dom.IMember p = GetParentMember(this.textEditor, this.currentSelection.StartPosition.Line, this.currentSelection.StartPosition.Column);
//
//				TextLocation loc = new ICSharpCode.TextEditor.TextLocation(
//					p.BodyRegion.EndColumn - 1, p.BodyRegion.EndLine - 1);
//
//				int offset = textEditor.Document.PositionToOffset(loc);
//
//				textEditor.Document.Insert(offset, code);
//			}
//		}

        protected static bool CheckForJumpInstructions(MethodDeclaration method, ISelection selection)
        {
            FindJumpInstructionsVisitor fjiv = new FindJumpInstructionsVisitor(method, selection);

            method.AcceptVisitor(fjiv, null);

            return(fjiv.IsOk);
        }
예제 #3
0
        public void GotoTargetOccursBefore()
        {
            const string codeText = @"public void Switch()
                                {
                                    fred:
                                        return;
                                    goto fred;
                                }";

            var md = AstMatchHelper.ParseToMethodDeclaration(codeText);
            FindJumpInstructionsVisitor v = new FindJumpInstructionsVisitor(md, new MySelection(md.Body.Children));

            md.AcceptVisitor(v, null);

            Assert.IsTrue(v.IsOk);
        }
예제 #4
0
        public void GotoDefaultCase()
        {
            const string codeText = @"public void Switch()
                                {
                                    switch (0)
                                    {
                                        case 0:
                                            goto default;
                                        default:
                                            break;
                                    }
                                    
                                }";

            var md = AstMatchHelper.ParseToMethodDeclaration(codeText);
            FindJumpInstructionsVisitor v = new FindJumpInstructionsVisitor(md, new MySelection(md.Body.Children));

            md.AcceptVisitor(v, null);

            Assert.IsTrue(v.IsOk);
        }