Skip to content

Commit

Permalink
feat: Tweak formatting for conflict nodes
Browse files Browse the repository at this point in the history
  • Loading branch information
jpedroh committed May 24, 2024
1 parent 06e78d3 commit 243ddfe
Show file tree
Hide file tree
Showing 11 changed files with 67 additions and 14 deletions.
Original file line number Diff line number Diff line change
@@ -1 +1 @@
package de . fosd . jdime . common ; import AST . * ; import de . fosd . jdime . common . operations . ConflictOperation ; import de . fosd . jdime . common . operations . AddOperation ; public class ASTNodeArtifact extends Artifact < ASTNodeArtifact > { private ASTNodeArtifact ( final ASTNode < ? > astnode ) { assert ( astnode != null ) ; this . astnode = astnode ; this . initializeChildren ( ) ; } public ASTNodeArtifact ( final FileArtifact artifact ) { assert ( artifact != null ) ; setRevision ( artifact . getRevision ( ) ) ; ASTNode < ? > astnode ; if ( artifact . isEmpty ( ) ) { astnode = new ASTNode < > ( ) ; } else { Program p = initProgram ( ) ; p . addSourceFile ( artifact . getPath ( ) ) ; astnode = p ; } this . astnode = astnode ; this . initializeChildren ( ) ; renumberTree ( ) ; } }
package de . fosd . jdime . common ; import AST . * ; import de . fosd . jdime . common . operations . ConflictOperation ; import de . fosd . jdime . common . operations . AddOperation ; public class ASTNodeArtifact extends Artifact < ASTNodeArtifact > { private ASTNodeArtifact ( final ASTNode < ? > astnode ) { assert ( astnode != null ) ; this . astnode = astnode ; this . initializeChildren ( ) ; } public ASTNodeArtifact ( final FileArtifact artifact ) { assert ( artifact != null ) ; setRevision ( artifact . getRevision ( ) ) ; ASTNode < ? > astnode ; if ( artifact . isEmpty ( ) ) { astnode = new ASTNode < > ( ) ; } else { Program p = initProgram ( ) ; p . addSourceFile ( artifact . getPath ( ) ) ; astnode = p ; } this . astnode = astnode ; this . initializeChildren ( ) ; renumberTree ( ) ; } }
Original file line number Diff line number Diff line change
@@ -1 +1 @@
package br . fosd . jdime . stats ; import java . text . DecimalFormat ; import java . util . HashMap ; import java . util . TreeSet ; import de . fosd . jdime . common . LangElem ; import java . util . logging . Level ; import java . util . logging . Logger ; public class ASTStats { }
package br . fosd . jdime . stats ; import java . text . DecimalFormat ; import java . util . HashMap ; import java . util . TreeSet ; import de . fosd . jdime . common . LangElem ; import java . util . logging . Level ; import java . util . logging . Logger ; public class ASTStats { }
Original file line number Diff line number Diff line change
@@ -1 +1 @@
package de . fosd . jdime . merge ; import java . util . List ; import AST . * ; import de . fosd . jdime . operations . AddOperation ; import de . fosd . jdime . operations . ConflictOperation ; import de . fosd . jdime . operations . MergeOperation ; import static de . fosd . jdime . artifact . Artifacts . root ; import static de . fosd . jdime . strdump . DumpMode . PLAINTEXT_TREE ;
package de . fosd . jdime . merge ; import java . util . List ; import AST . * ; import de . fosd . jdime . operations . AddOperation ; import de . fosd . jdime . operations . ConflictOperation ; import de . fosd . jdime . operations . MergeOperation ; import static de . fosd . jdime . artifact . Artifacts . root ; import static de . fosd . jdime . strdump . DumpMode . PLAINTEXT_TREE ;
2 changes: 1 addition & 1 deletion bin/tests/scenarios/jdime_matching_issue/merge.java
Original file line number Diff line number Diff line change
@@ -1 +1 @@
package de . fosd . jdime . artifact ; import java . security . MessageDigest ; public abstract class Artifact < T extends Artifact < T > > implements Comparable < T > , StatisticsInterface { public boolean hasChanges ( Revision revision ) { if ( this . revision . equals ( revision ) ) { return false ; } if ( ! hasMatching ( revision ) ) { return true ; } T match = getMatching ( revision ) . getMatchingArtifact ( this ) ; return getTreeSize ( ) != match . getTreeSize ( ) || ! getTreeHash ( ) . equals ( match . getTreeHash ( ) ) ; } }
package de . fosd . jdime . artifact ; import java . security . MessageDigest ; public abstract class Artifact < T extends Artifact < T > > implements Comparable < T > , StatisticsInterface { public boolean hasChanges ( Revision revision ) { if ( this . revision . equals ( revision ) ) { return false ; } if ( ! hasMatching ( revision ) ) { return true ; } T match = getMatching ( revision ) . getMatchingArtifact ( this ) ; return getTreeSize ( ) != match . getTreeSize ( ) || ! getTreeHash ( ) . equals ( match . getTreeHash ( ) ) ; } }
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
class Test { <<<<<<<<< ========= public static void main ( ) { System . out . println ( "Hello, Joao!" ) ; } >>>>>>>>> }
class Test {
<<<<<<<<<
=========
public static void main ( ) { System . out . println ( "Hello, Joao!" ) ; }
>>>>>>>>>
}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
package de . fosd . jdime ; import java . io . File ; import java . net . URISyntaxException ; import java . net . URL ; import java . util . Arrays ; import org . junit . BeforeClass ; import static org . junit . Assert . assertNotNull ; import static org . junit . Assert . assertTrue ; import static org . junit . Assert . fail ; public class JDimeTest { protected static File file ( File parent , String child ) { File f = new File ( parent , child ) ; assertTrue ( f + " does not exist." , f . exists ( ) ) ; return f ; } protected static File file ( File parent , String name , String ... names ) { if ( names != null ) { String path = String . format ( "%s/%s" , name , String . join ( "/" , names ) ) ; return file ( parent , path ) ; } else { return file ( parent , name ) ; } } protected static File file ( String path ) { URL res = JDimeTest . class . getResource ( path ) ; assertNotNull ( "The file " + path + " was not found." , res ) ; try { return new File ( res . toURI ( ) ) ; } catch ( URISyntaxException e ) { fail ( e . getMessage ( ) ) ; return null ; } } protected static File file ( String name , String ... names ) { if ( names != null ) { String path = String . format ( "/%s/%s" , name , String . join ( "/" , names ) ) ; return file ( path ) ; } else { return file ( "/" + name ) ; } } }
package de . fosd . jdime ; import java . io . File ; import java . net . URISyntaxException ; import java . net . URL ; import java . util . Arrays ; import org . junit . BeforeClass ; import static org . junit . Assert . assertNotNull ; import static org . junit . Assert . assertTrue ; import static org . junit . Assert . fail ; public class JDimeTest { protected static File file ( File parent , String child ) { File f = new File ( parent , child ) ; assertTrue ( f + " does not exist." , f . exists ( ) ) ; return f ; } protected static File file ( File parent , String name , String ... names ) { if ( names != null ) { String path = String . format ( "%s/%s" , name , String . join ( "/" , names ) ) ; return file ( parent , path ) ; } else { return file ( parent , name ) ; } } protected static File file ( String path ) { URL res = JDimeTest . class . getResource ( path ) ; assertNotNull ( "The file " + path + " was not found." , res ) ; try { return new File ( res . toURI ( ) ) ; } catch ( URISyntaxException e ) { fail ( e . getMessage ( ) ) ; return null ; } } protected static File file ( String name , String ... names ) { if ( names != null ) { String path = String . format ( "/%s/%s" , name , String . join ( "/" , names ) ) ; return file ( path ) ; } else { return file ( "/" + name ) ; } } }
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
class Test { <<<<<<<<< public static void main ( ) { System . out . println ( "Hello, Joao!" ) ; } ========= >>>>>>>>> }
class Test {
<<<<<<<<<
public static void main ( ) { System . out . println ( "Hello, Joao!" ) ; }
=========
>>>>>>>>>
}
8 changes: 7 additions & 1 deletion bin/tests/scenarios/semi_structured/merge.java
Original file line number Diff line number Diff line change
@@ -1 +1,7 @@
public class Test { long fibo ( int n ) { if ( n < 2 ) { return n ; } else { return fibo ( n - 1 ) + fibo ( n - 2 ) ; } } int calc ( int a , int b ) { return a <<<<<<<<< + ========= * >>>>>>>>> b ; } }
public class Test { long fibo ( int n ) { if ( n < 2 ) { return n ; } else { return fibo ( n - 1 ) + fibo ( n - 2 ) ; } } int calc ( int a , int b ) { return a
<<<<<<<<<
+
=========
*
>>>>>>>>>
b ; } }
14 changes: 13 additions & 1 deletion bin/tests/scenarios/smoke_java/merge.java
Original file line number Diff line number Diff line change
@@ -1 +1,13 @@
public class Main { void delete ( Pessoa pessoa ) ; void create ( Pessoa pessoa ) ; public static void main ( String [ ] args ) { int x = 0 ; System . out . println ( <<<<<<<<< "Hello, João!" ========= "Hello, Paulo!" >>>>>>>>> ) ; int y = <<<<<<<<< 3 ========= 5 >>>>>>>>> ; } void upsert ( Pessoa pessoa ) ; }
public class Main { void delete ( Pessoa pessoa ) ; void create ( Pessoa pessoa ) ; public static void main ( String [ ] args ) { int x = 0 ; System . out . println (
<<<<<<<<<
"Hello, João!"
=========
"Hello, Paulo!"
>>>>>>>>>
) ; int y =
<<<<<<<<<
3
=========
5
>>>>>>>>>
; } void upsert ( Pessoa pessoa ) ; }
14 changes: 13 additions & 1 deletion bin/tests/scenarios/unordered_with_non_labelled/merge.java
Original file line number Diff line number Diff line change
@@ -1 +1,13 @@
public class Main { static { int <<<<<<<<< x ========= y >>>>>>>>> = <<<<<<<<< 0 ========= 2 >>>>>>>>> ; } static { System . out . println ( "I'm a static block" ) ; } public Main ( ) { System . out . println ( "I'm a constructor" ) ; int y = 3 ; } static { System . out . println ( "I don't know what's going on" ) ; } }
public class Main { static { int
<<<<<<<<<
x
=========
y
>>>>>>>>>
=
<<<<<<<<<
0
=========
2
>>>>>>>>>
; } static { System . out . println ( "I'm a static block" ) ; } public Main ( ) { System . out . println ( "I'm a constructor" ) ; int y = 3 ; } static { System . out . println ( "I don't know what's going on" ) ; } }
21 changes: 17 additions & 4 deletions merge/src/merged_cst_node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -63,15 +63,28 @@ impl Display for MergedCSTNode<'_> {
}
MergedCSTNode::Conflict { left, right } => match (left, right) {
(Some(left), Some(right)) => {
write!(f, "<<<<<<<<< {} ========= {} >>>>>>>>>", left, right)
writeln!(f)?;
writeln!(f, "<<<<<<<<<")?;
writeln!(f, "{}", left)?;
writeln!(f, "=========")?;
writeln!(f, "{}", right)?;
writeln!(f, ">>>>>>>>>")
}
(Some(left), None) => {
write!(f, "<<<<<<<<< {} ========= >>>>>>>>>", left)
writeln!(f)?;
writeln!(f, "<<<<<<<<<")?;
writeln!(f, "{}", left)?;
writeln!(f, "=========")?;
writeln!(f, ">>>>>>>>>")
}
(None, Some(right)) => {
write!(f, "<<<<<<<<< ========= {} >>>>>>>>>", right)
writeln!(f)?;
writeln!(f, "<<<<<<<<<")?;
writeln!(f, "=========")?;
writeln!(f, "{}", right)?;
writeln!(f, ">>>>>>>>>")
}
(None, None) => panic!("Invalid conflict provided"),
(None, None) => unreachable!("Invalid conflict provided"),
},
}
}
Expand Down

0 comments on commit 243ddfe

Please sign in to comment.