Mercurial > projects > dwt2
diff org.eclipse.text/src/org/eclipse/jface/text/Assert.d @ 12:bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sat, 14 Mar 2009 18:23:29 +0100 |
parents | |
children | 5feec68b4556 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/org.eclipse.text/src/org/eclipse/jface/text/Assert.d Sat Mar 14 18:23:29 2009 +0100 @@ -0,0 +1,341 @@ +/******************************************************************************* + * Copyright (c) 2000, 2008 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + * Port to the D programming language: + * Frank Benoit <benoit@tionex.de> + *******************************************************************************/ +module org.eclipse.jface.text.Assert; + +import org.eclipse.jface.text.IDocumentPartitioningListener; // packageimport +import org.eclipse.jface.text.DefaultTextHover; // packageimport +import org.eclipse.jface.text.AbstractInformationControl; // packageimport +import org.eclipse.jface.text.TextUtilities; // packageimport +import org.eclipse.jface.text.IInformationControlCreatorExtension; // packageimport +import org.eclipse.jface.text.AbstractInformationControlManager; // packageimport +import org.eclipse.jface.text.ITextViewerExtension2; // packageimport +import org.eclipse.jface.text.IDocumentPartitioner; // packageimport +import org.eclipse.jface.text.DefaultIndentLineAutoEditStrategy; // packageimport +import org.eclipse.jface.text.ITextSelection; // packageimport +import org.eclipse.jface.text.Document; // packageimport +import org.eclipse.jface.text.FindReplaceDocumentAdapterContentProposalProvider; // packageimport +import org.eclipse.jface.text.ITextListener; // packageimport +import org.eclipse.jface.text.BadPartitioningException; // packageimport +import org.eclipse.jface.text.ITextViewerExtension5; // packageimport +import org.eclipse.jface.text.IDocumentPartitionerExtension3; // packageimport +import org.eclipse.jface.text.IUndoManager; // packageimport +import org.eclipse.jface.text.ITextHoverExtension2; // packageimport +import org.eclipse.jface.text.IRepairableDocument; // packageimport +import org.eclipse.jface.text.IRewriteTarget; // packageimport +import org.eclipse.jface.text.DefaultPositionUpdater; // packageimport +import org.eclipse.jface.text.RewriteSessionEditProcessor; // packageimport +import org.eclipse.jface.text.TextViewerHoverManager; // packageimport +import org.eclipse.jface.text.DocumentRewriteSession; // packageimport +import org.eclipse.jface.text.TextViewer; // packageimport +import org.eclipse.jface.text.ITextViewerExtension8; // packageimport +import org.eclipse.jface.text.RegExMessages; // packageimport +import org.eclipse.jface.text.IDelayedInputChangeProvider; // packageimport +import org.eclipse.jface.text.ITextOperationTargetExtension; // packageimport +import org.eclipse.jface.text.IWidgetTokenOwner; // packageimport +import org.eclipse.jface.text.IViewportListener; // packageimport +import org.eclipse.jface.text.GapTextStore; // packageimport +import org.eclipse.jface.text.MarkSelection; // packageimport +import org.eclipse.jface.text.IDocumentPartitioningListenerExtension; // packageimport +import org.eclipse.jface.text.IDocumentAdapterExtension; // packageimport +import org.eclipse.jface.text.IInformationControlExtension; // packageimport +import org.eclipse.jface.text.IDocumentPartitioningListenerExtension2; // packageimport +import org.eclipse.jface.text.DefaultDocumentAdapter; // packageimport +import org.eclipse.jface.text.ITextViewerExtension3; // packageimport +import org.eclipse.jface.text.IInformationControlCreator; // packageimport +import org.eclipse.jface.text.TypedRegion; // packageimport +import org.eclipse.jface.text.ISynchronizable; // packageimport +import org.eclipse.jface.text.IMarkRegionTarget; // packageimport +import org.eclipse.jface.text.TextViewerUndoManager; // packageimport +import org.eclipse.jface.text.IRegion; // packageimport +import org.eclipse.jface.text.IInformationControlExtension2; // packageimport +import org.eclipse.jface.text.IDocumentExtension4; // packageimport +import org.eclipse.jface.text.IDocumentExtension2; // packageimport +import org.eclipse.jface.text.IDocumentPartitionerExtension2; // packageimport +import org.eclipse.jface.text.DefaultInformationControl; // packageimport +import org.eclipse.jface.text.IWidgetTokenOwnerExtension; // packageimport +import org.eclipse.jface.text.DocumentClone; // packageimport +import org.eclipse.jface.text.DefaultUndoManager; // packageimport +import org.eclipse.jface.text.IFindReplaceTarget; // packageimport +import org.eclipse.jface.text.IAutoEditStrategy; // packageimport +import org.eclipse.jface.text.ILineTrackerExtension; // packageimport +import org.eclipse.jface.text.IUndoManagerExtension; // packageimport +import org.eclipse.jface.text.TextSelection; // packageimport +import org.eclipse.jface.text.DefaultAutoIndentStrategy; // packageimport +import org.eclipse.jface.text.IAutoIndentStrategy; // packageimport +import org.eclipse.jface.text.IPainter; // packageimport +import org.eclipse.jface.text.IInformationControl; // packageimport +import org.eclipse.jface.text.IInformationControlExtension3; // packageimport +import org.eclipse.jface.text.ITextViewerExtension6; // packageimport +import org.eclipse.jface.text.IInformationControlExtension4; // packageimport +import org.eclipse.jface.text.DefaultLineTracker; // packageimport +import org.eclipse.jface.text.IDocumentInformationMappingExtension; // packageimport +import org.eclipse.jface.text.IRepairableDocumentExtension; // packageimport +import org.eclipse.jface.text.ITextHover; // packageimport +import org.eclipse.jface.text.FindReplaceDocumentAdapter; // packageimport +import org.eclipse.jface.text.ILineTracker; // packageimport +import org.eclipse.jface.text.Line; // packageimport +import org.eclipse.jface.text.ITextViewerExtension; // packageimport +import org.eclipse.jface.text.IDocumentAdapter; // packageimport +import org.eclipse.jface.text.TextEvent; // packageimport +import org.eclipse.jface.text.BadLocationException; // packageimport +import org.eclipse.jface.text.AbstractDocument; // packageimport +import org.eclipse.jface.text.AbstractLineTracker; // packageimport +import org.eclipse.jface.text.TreeLineTracker; // packageimport +import org.eclipse.jface.text.ITextPresentationListener; // packageimport +import org.eclipse.jface.text.Region; // packageimport +import org.eclipse.jface.text.ITextViewer; // packageimport +import org.eclipse.jface.text.IDocumentInformationMapping; // packageimport +import org.eclipse.jface.text.MarginPainter; // packageimport +import org.eclipse.jface.text.IPaintPositionManager; // packageimport +import org.eclipse.jface.text.TextPresentation; // packageimport +import org.eclipse.jface.text.IFindReplaceTargetExtension; // packageimport +import org.eclipse.jface.text.ISlaveDocumentManagerExtension; // packageimport +import org.eclipse.jface.text.ISelectionValidator; // packageimport +import org.eclipse.jface.text.IDocumentExtension; // packageimport +import org.eclipse.jface.text.PropagatingFontFieldEditor; // packageimport +import org.eclipse.jface.text.ConfigurableLineTracker; // packageimport +import org.eclipse.jface.text.SlaveDocumentEvent; // packageimport +import org.eclipse.jface.text.IDocumentListener; // packageimport +import org.eclipse.jface.text.PaintManager; // packageimport +import org.eclipse.jface.text.IFindReplaceTargetExtension3; // packageimport +import org.eclipse.jface.text.ITextDoubleClickStrategy; // packageimport +import org.eclipse.jface.text.IDocumentExtension3; // packageimport +import org.eclipse.jface.text.Position; // packageimport +import org.eclipse.jface.text.TextMessages; // packageimport +import org.eclipse.jface.text.CopyOnWriteTextStore; // packageimport +import org.eclipse.jface.text.WhitespaceCharacterPainter; // packageimport +import org.eclipse.jface.text.IPositionUpdater; // packageimport +import org.eclipse.jface.text.DefaultTextDoubleClickStrategy; // packageimport +import org.eclipse.jface.text.ListLineTracker; // packageimport +import org.eclipse.jface.text.ITextInputListener; // packageimport +import org.eclipse.jface.text.BadPositionCategoryException; // packageimport +import org.eclipse.jface.text.IWidgetTokenKeeperExtension; // packageimport +import org.eclipse.jface.text.IInputChangedListener; // packageimport +import org.eclipse.jface.text.ITextOperationTarget; // packageimport +import org.eclipse.jface.text.IDocumentInformationMappingExtension2; // packageimport +import org.eclipse.jface.text.ITextViewerExtension7; // packageimport +import org.eclipse.jface.text.IInformationControlExtension5; // packageimport +import org.eclipse.jface.text.IDocumentRewriteSessionListener; // packageimport +import org.eclipse.jface.text.JFaceTextUtil; // packageimport +import org.eclipse.jface.text.AbstractReusableInformationControlCreator; // packageimport +import org.eclipse.jface.text.TabsToSpacesConverter; // packageimport +import org.eclipse.jface.text.CursorLinePainter; // packageimport +import org.eclipse.jface.text.ITextHoverExtension; // packageimport +import org.eclipse.jface.text.IEventConsumer; // packageimport +import org.eclipse.jface.text.IDocument; // packageimport +import org.eclipse.jface.text.IWidgetTokenKeeper; // packageimport +import org.eclipse.jface.text.DocumentCommand; // packageimport +import org.eclipse.jface.text.TypedPosition; // packageimport +import org.eclipse.jface.text.IEditingSupportRegistry; // packageimport +import org.eclipse.jface.text.IDocumentPartitionerExtension; // packageimport +import org.eclipse.jface.text.AbstractHoverInformationControlManager; // packageimport +import org.eclipse.jface.text.IEditingSupport; // packageimport +import org.eclipse.jface.text.IMarkSelection; // packageimport +import org.eclipse.jface.text.ISlaveDocumentManager; // packageimport +import org.eclipse.jface.text.DocumentEvent; // packageimport +import org.eclipse.jface.text.DocumentPartitioningChangedEvent; // packageimport +import org.eclipse.jface.text.ITextStore; // packageimport +import org.eclipse.jface.text.JFaceTextMessages; // packageimport +import org.eclipse.jface.text.DocumentRewriteSessionEvent; // packageimport +import org.eclipse.jface.text.SequentialRewriteTextStore; // packageimport +import org.eclipse.jface.text.DocumentRewriteSessionType; // packageimport +import org.eclipse.jface.text.TextAttribute; // packageimport +import org.eclipse.jface.text.ITextViewerExtension4; // packageimport +import org.eclipse.jface.text.ITypedRegion; // packageimport + + +import java.lang.all; + + +/** + * <code>Assert</code> is useful for for embedding runtime sanity checks + * in code. The static predicate methods all test a condition and throw some + * type of unchecked exception if the condition does not hold. + * <p> + * Assertion failure exceptions, like most runtime exceptions, are + * thrown when something is misbehaving. Assertion failures are invariably + * unspecified behavior; consequently, clients should never rely on + * these being thrown (or not thrown). <b>If you find yourself in the + * position where you need to catch an assertion failure, you have most + * certainly written your program incorrectly.</b> + * </p> + * <p> + * Note that an <code>assert</code> statement is slated to be added to the + * Java language in JDK 1.4, rending this class obsolete. + * </p> + * + * @deprecated As of 3.3, replaced by {@link org.eclipse.core.runtime.Assert} + * @noinstantiate This class is not intended to be instantiated by clients. + */ +public final class Assert { + + /** + * <code>AssertionFailedException</code> is a runtime exception thrown + * by some of the methods in <code>Assert</code>. + * <p> + * This class is not declared public to prevent some misuses; programs that catch + * or otherwise depend on assertion failures are susceptible to unexpected + * breakage when assertions in the code are added or removed. + * </p> + * <p> + * This class is not intended to be serialized. + * </p> + */ + private static class AssertionFailedException : RuntimeException { + + /** + * Serial version UID for this class. + * <p> + * Note: This class is not intended to be serialized. + * </p> + * @since 3.1 + */ + private static const long serialVersionUID= 3689918374733886002L; + + /** + * Constructs a new exception. + */ + public this() { + } + + /** + * Constructs a new exception with the given message. + * + * @param detail the detailed message + */ + public this(String detail) { + super(detail); + } + } + + /* This class is not intended to be instantiated. */ + private this() { + } + + /** + * Asserts that an argument is legal. If the given bool is + * not <code>true</code>, an <code>IllegalArgumentException</code> + * is thrown. + * + * @param expression the outcome of the check + * @return <code>true</code> if the check passes (does not return + * if the check fails) + * @exception IllegalArgumentException if the legality test failed + */ + public static bool isLegal(bool expression) { + // succeed as quickly as possible + if (expression) { + return true; + } + return isLegal(expression, "");//$NON-NLS-1$ + } + + /** + * Asserts that an argument is legal. If the given bool is + * not <code>true</code>, an <code>IllegalArgumentException</code> + * is thrown. + * The given message is included in that exception, to aid debugging. + * + * @param expression the outcome of the check + * @param message the message to include in the exception + * @return <code>true</code> if the check passes (does not return + * if the check fails) + * @exception IllegalArgumentException if the legality test failed + */ + public static bool isLegal(bool expression, String message) { + if (!expression) + throw new IllegalArgumentException("assertion failed; " ~ message); //$NON-NLS-1$ + return expression; + } + + /** + * Asserts that the given object is not <code>null</code>. If this + * is not the case, some kind of unchecked exception is thrown. + * <p> + * As a general rule, parameters passed to API methods must not be + * <code>null</code> unless <b>explicitly</b> allowed in the method's + * specification. Similarly, results returned from API methods are never + * <code>null</code> unless <b>explicitly</b> allowed in the method's + * specification. Implementations are encouraged to make regular use of + * <code>Assert.isNotNull</code> to ensure that <code>null</code> + * parameters are detected as early as possible. + * </p> + * + * @param object the value to test + * @exception RuntimeException an unspecified unchecked exception if the object + * is <code>null</code> + */ + public static void isNotNull(Object object) { + // succeed as quickly as possible + if (object !is null) { + return; + } + isNotNull(object, "");//$NON-NLS-1$ + } + + /** + * Asserts that the given object is not <code>null</code>. If this + * is not the case, some kind of unchecked exception is thrown. + * The given message is included in that exception, to aid debugging. + * <p> + * As a general rule, parameters passed to API methods must not be + * <code>null</code> unless <b>explicitly</b> allowed in the method's + * specification. Similarly, results returned from API methods are never + * <code>null</code> unless <b>explicitly</b> allowed in the method's + * specification. Implementations are encouraged to make regular use of + * <code>Assert.isNotNull</code> to ensure that <code>null</code> + * parameters are detected as early as possible. + * </p> + * + * @param object the value to test + * @param message the message to include in the exception + * @exception RuntimeException an unspecified unchecked exception if the object + * is <code>null</code> + */ + public static void isNotNull(Object object, String message) { + if (object is null) + throw new AssertionFailedException("null argument;" ~ message);//$NON-NLS-1$ + } + + /** + * Asserts that the given bool is <code>true</code>. If this + * is not the case, some kind of unchecked exception is thrown. + * + * @param expression the outcome of the check + * @return <code>true</code> if the check passes (does not return + * if the check fails) + */ + public static bool isTrue(bool expression) { + // succeed as quickly as possible + if (expression) { + return true; + } + return isTrue(expression, "");//$NON-NLS-1$ + } + + /** + * Asserts that the given bool is <code>true</code>. If this + * is not the case, some kind of unchecked exception is thrown. + * The given message is included in that exception, to aid debugging. + * + * @param expression the outcome of the check + * @param message the message to include in the exception + * @return <code>true</code> if the check passes (does not return + * if the check fails) + */ + public static bool isTrue(bool expression, String message) { + if (!expression) + throw new AssertionFailedException("Assertion failed: "~message);//$NON-NLS-1$ + return expression; + } +}