Skip to content

Commit

Permalink
[fact] Re-implement some rudimentary conflict handling for values #43
Browse files Browse the repository at this point in the history
  • Loading branch information
slarse committed Mar 8, 2020
1 parent f579b0f commit 448ca28
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 4 deletions.
2 changes: 1 addition & 1 deletion src/main/java/se/kth/spork/spoon/PcsInterpreter.java
Original file line number Diff line number Diff line change
Expand Up @@ -440,7 +440,7 @@ private void setContent(CtElement mergeTree, SpoonNode originalTree) {
Set<Content<SpoonNode, RoledValues>> nodeContents = contents.get(originalTree);

if (nodeContents.size() != 1) {
throw new IllegalStateException("CONFLICT");
throw new IllegalStateException("UNHANDLED CONFLICT");
} else {
RoledValues rvs = nodeContents.iterator().next().getValue();

Expand Down
12 changes: 9 additions & 3 deletions src/main/java/se/kth/spork/spoon/Spoon3dmMerge.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import se.kth.spork.base3dm.*;
import se.kth.spork.cli.SporkPrettyPrinter;
import se.kth.spork.util.Pair;
import se.kth.spork.util.Triple;
import spoon.reflect.code.CtBinaryOperator;
import spoon.reflect.code.CtLiteral;
import spoon.reflect.code.CtOperatorAssignment;
import spoon.reflect.code.CtUnaryOperator;
import spoon.reflect.declaration.*;
import spoon.reflect.factory.ModuleFactory;
import spoon.reflect.path.CtRole;
import spoon.reflect.reference.CtReference;
import spoon.reflect.reference.CtWildcardReference;
Expand Down Expand Up @@ -232,11 +232,17 @@ private static void handleContentConflicts(TStar<SpoonNode, RoledValues> delta)

switch (role) {
case MODIFIER:
Optional<Set<ModifierKind>> modifiers = mergeModifierKinds(
merged = mergeModifierKinds(
base.map(o -> (Set<ModifierKind>) o),
(Set<ModifierKind>) leftVal,
(Set<ModifierKind>) rightVal);
merged = modifiers;
break;
case NAME:
case VALUE:
// FIXME This is not a merge, but a conflict embedding which should be done later, FIX
merged = Optional.of(SporkPrettyPrinter.START_CONFLICT + "\n"
+ leftVal + "\n" + SporkPrettyPrinter.MID_CONFLICT + "\n"
+ rightVal + "\n" + SporkPrettyPrinter.END_CONFLICT);
break;
default:
// pass
Expand Down

0 comments on commit 448ca28

Please sign in to comment.