コード例 #1
0
ファイル: main.cs プロジェクト: Plankankul/SpecSharp
    void ConstructCompilationUnit()
    {
        CompilationUnitSnippet cu = new CompilationUnitSnippet();

        this.compilationUnit = cu;
        this.compilation.CompilationUnits.Add(cu);
        cu.Compilation = this.compilation;
        cu.Name        = new Identifier(this.inputLine.Substring(5));
        string snippetText = this.ReadString();

        cu.SourceContext.Document = this.currentDocument = this.compiler.CreateDocument(cu.Name.ToString(), 1, snippetText);
        cu.SourceContext.EndPos   = snippetText.Length;
        cu.ParserFactory          = new Microsoft.SpecSharp.ParserFactory();
    }
コード例 #2
0
ファイル: Updater.cs プロジェクト: asvishnyakov/CodeContracts
 public virtual CompilationUnitSnippet VisitCompilationUnitSnippet(CompilationUnitSnippet snippet, CompilationUnitSnippet changes, CompilationUnitSnippet deletions, CompilationUnitSnippet insertions){
   CompilationUnit cu = this.VisitCompilationUnit(snippet, changes, deletions, insertions);
   Debug.Assert(cu is CompilationUnitSnippet);
   return cu as CompilationUnitSnippet;
 }
コード例 #3
0
    public virtual Differences VisitCompilationUnitSnippet(CompilationUnitSnippet snippet1, CompilationUnitSnippet snippet2){
      Differences differences = new Differences(snippet1, snippet2);
      if (snippet1 == null || snippet2 == null){
        if (snippet1 != snippet2) differences.NumberOfDifferences++; else differences.NumberOfSimilarities++;
        return differences;
      }
      CompilationUnitSnippet changes = (CompilationUnitSnippet)snippet2.Clone();
      CompilationUnitSnippet deletions = (CompilationUnitSnippet)snippet2.Clone();
      CompilationUnitSnippet insertions = (CompilationUnitSnippet)snippet2.Clone();

      if (snippet1.SourceContext.Document == null || snippet2.SourceContext.Document == null){
        if (snippet1.SourceContext.Document == snippet2.SourceContext.Document) differences.NumberOfSimilarities++; else differences.NumberOfDifferences++;
      }else if (snippet1.SourceContext.Document.Name == snippet2.SourceContext.Document.Name) 
        differences.NumberOfSimilarities++; else differences.NumberOfDifferences++;

      if (differences.NumberOfDifferences == 0){
        differences.Changes = null;
        differences.Deletions = null;
        differences.Insertions = null;
      }else{
        differences.Changes = changes;
        differences.Deletions = deletions;
        differences.Insertions = insertions;
      }
      return differences;
    }
コード例 #4
0
ファイル: StandardVisitor.cs プロジェクト: dbremner/specsharp
 public virtual CompilationUnit VisitCompilationUnitSnippet(CompilationUnitSnippet snippet){
   return this.VisitCompilationUnit(snippet);
 }
コード例 #5
0
ファイル: StandardVisitor.cs プロジェクト: dbremner/specsharp
 public override CompilationUnit VisitCompilationUnitSnippet(CompilationUnitSnippet snippet){
   if (snippet == null) return null;
   Document doc = snippet.SourceContext.Document;
   if (doc == null) return null;
   string fileName = doc.Name;
   int lineNumber = doc.LineNumber;
   DocumentText sourceText = doc.Text;
   IParserFactory pf = snippet.ParserFactory;
   IParser p;
   if (pf == null)
     p = this.DefaultParserFactory.CreateParser(fileName, lineNumber, sourceText, this.SymbolTable, this.ErrorNodes, this.Options);
   else
     p = pf.CreateParser(fileName, lineNumber, sourceText, this.SymbolTable, this.ErrorNodes, this.Options);
   if (p == null) return null;
   p.ParseCompilationUnit(snippet);
   return snippet;
 }
コード例 #6
0
ファイル: Inspector.cs プロジェクト: a780201/CodeContracts
 public virtual void VisitCompilationUnitSnippet(CompilationUnitSnippet snippet)
 {
   this.VisitCompilationUnit(snippet);
 }
コード例 #7
0
ファイル: Duplicator.cs プロジェクト: hnlshzx/DotNetOpenAuth
 public override CompilationUnit VisitCompilationUnitSnippet(CompilationUnitSnippet snippet)
 {
     if (snippet == null) return null;
     return base.VisitCompilationUnitSnippet((CompilationUnitSnippet)snippet.Clone());
 }
コード例 #8
0
 public virtual CompilationUnitSnippet VisitCompilationUnitSnippet(CompilationUnitSnippet snippet1, CompilationUnitSnippet snippet2)
 {
     return snippet1;
 }
コード例 #9
0
 public virtual Compilation IncrementalSymbolTableUpdate(Compilation compilation, CompilationUnitSnippet compilationUnit, Document changedDocument, 
   Method method, SourceContext spanningContextForChanges, int changeInLength){
   if (compilation == null || compilationUnit == null || changedDocument == null || method == null || method.Body == null){Debug.Assert(false); return null;}
   //Record the fact that method has changed, so that subsequent edits do not have to search for it 
   //in an AST that now has source contexts with out of date positions (the line numbers are up to date, but not the positions).
   compilationUnit.ChangedMethod = method;
   compilationUnit.OriginalEndPosOfChangedMethod = method.SourceContext.EndPos;
   if (method.SourceContext.Document != null){
     //Contruct a new context for the method that refers to the new document
     SourceContext newCtx = this.GetMethodBodyContextInNewDocument(changedDocument, method.Body.SourceContext, spanningContextForChanges, changeInLength);
     //Now update the original document so that all nodes that follow method in the source will report their source lines relative to the changedDocument
     int oldNumLines = method.Body.SourceContext.EndLine - method.Body.SourceContext.StartLine;
     int newNumLines = newCtx.EndLine - newCtx.StartLine;
     method.SourceContext.Document.InsertOrDeleteLines(method.SourceContext.EndPos, newNumLines-oldNumLines);
     //Replace the method body context with the new context
     method.Body.SourceContext = newCtx;
   }
   //Get rid of the body statements (if present) that was constructed from the old context
   method.Body.Statements = null;
   return compilation;
 }
コード例 #10
0
 public virtual CompilationUnitSnippet CreateCompilationUnitSnippet(string fileName, int lineNumber, DocumentText text, Compilation compilation){
   Document doc = this.CreateDocument(Path.GetFullPath(fileName), 1, text);               
   CompilationUnitSnippet cu = new CompilationUnitSnippet();
   cu.Name = Identifier.For(doc.Name);
   cu.SourceContext = new SourceContext(doc);
   cu.Compilation = compilation;
   return cu;
 }
コード例 #11
0
ファイル: Parser.cs プロジェクト: Plankankul/SpecSharp
 public override CompilationUnitSnippet VisitCompilationUnitSnippet(CompilationUnitSnippet snippet)
 {
     System.Compiler.Parser p = this.DefaultCompiler.CreateParser(snippet.SourceContext.Document, this.ErrorNodes);
     p.ParseCompilationUnit(snippet);
     return(null);
 }