blob: e048c4f9a45fcb366babdd97ec13dc4233191bc1 [file] [log] [blame]
// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package com.google.dart.compiler;
import com.google.dart.compiler.ast.DartUnit;
/**
* Representation of changes to source.
*/
public abstract class SourceDelta {
public abstract Source getSourceBefore();
public abstract DartSource getSourceAfter();
public abstract DartUnit getUnitAfter();
public final SourceDelta after(DartSource sourceAfter) {
return new BeforeAfter(getSourceBefore(), sourceAfter, null);
}
public final SourceDelta after(DartUnit nodeAfter) {
return new BeforeAfter(getSourceBefore(), null, nodeAfter);
}
public static SourceDelta before(final DartSource sourceBefore) {
return new BeforeAfter(sourceBefore, sourceBefore, null);
}
private static class BeforeAfter extends SourceDelta {
private final Source sourceBefore;
private final DartSource sourceAfter;
private final DartUnit nodeAfter;
BeforeAfter(Source sourceBefore, DartSource sourceAfter, DartUnit nodeAfter) {
this.sourceBefore = sourceBefore;
this.sourceAfter = sourceAfter;
this.nodeAfter = nodeAfter;
}
@Override
public Source getSourceBefore() {
return sourceBefore;
}
@Override
public DartSource getSourceAfter() {
return sourceAfter;
}
@Override
public DartUnit getUnitAfter() {
return nodeAfter;
}
}
}