Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Tweak formatting for conflict nodes #54

Merged
merged 1 commit into from
May 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading