Move source files to proper packages
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/10110145 Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/10110145 Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/10110145 Branch: refs/heads/master Commit: 1011014553b6b01eda29c1181ca977edabec8600 Parents: 047c8f2 Author: sunlan <[email protected]> Authored: Wed Dec 20 08:55:31 2017 +0800 Committer: sunlan <[email protected]> Committed: Wed Dec 20 08:55:32 2017 +0800 ---------------------------------------------------------------------- .../groovy/ASTTransformationCustomizer.groovy | 301 -- .../ASTTransformationCustomizerFactory.groovy | 60 - src/main/groovy/AstBuilder.groovy | 145 - src/main/groovy/AstHelper.groovy | 76 - src/main/groovy/AstSpecificationCompiler.groovy | 1080 ----- src/main/groovy/AstStringCompiler.groovy | 63 - src/main/groovy/CollectRecursiveCalls.groovy | 62 - .../groovy/CompilerCustomizationBuilder.groovy | 64 - src/main/groovy/GrapeMain.groovy | 308 -- src/main/groovy/HasRecursiveCalls.groovy | 64 - src/main/groovy/InWhileLoopWrapper.groovy | 81 - src/main/groovy/RecursivenessTester.groovy | 100 - src/main/groovy/ReturnAdderForClosures.groovy | 48 - .../ReturnStatementToIterationConverter.groovy | 148 - src/main/groovy/StatementReplacer.groovy | 109 - src/main/groovy/StringUtil.groovy | 57 - .../TailRecursiveASTTransformation.groovy | 261 -- .../groovy/TernaryToIfStatementConverter.groovy | 42 - src/main/groovy/TransformTestHelper.groovy | 123 - src/main/groovy/VariableAccessReplacer.groovy | 73 - .../groovy/VariableExpressionReplacer.groovy | 171 - .../groovy/VariableExpressionTransformer.groovy | 47 - src/main/groovy/beans/Bindable.java | 116 - .../groovy/beans/BindableASTTransformation.java | 428 -- .../groovy/beans/DefaultPropertyAccessor.java | 34 - .../groovy/beans/DefaultPropertyReader.java | 32 - .../groovy/beans/DefaultPropertyWriter.java | 32 - src/main/groovy/beans/ListenerList.groovy | 131 - .../beans/ListenerListASTTransformation.groovy | 384 -- src/main/groovy/beans/PropertyAccessor.java | 25 - src/main/groovy/beans/PropertyReader.java | 26 - src/main/groovy/beans/PropertyWriter.java | 26 - src/main/groovy/beans/Vetoable.java | 113 - .../groovy/beans/VetoableASTTransformation.java | 444 -- src/main/groovy/cli/CliBuilderException.groovy | 24 - src/main/groovy/cli/Option.java | 105 - src/main/groovy/cli/OptionField.groovy | 27 - src/main/groovy/cli/TypedOption.java | 27 - src/main/groovy/cli/Unparsed.java | 39 - src/main/groovy/cli/UnparsedField.groovy | 27 - src/main/groovy/genArrayAccess.groovy | 146 - src/main/groovy/genArrays.groovy | 53 - src/main/groovy/genDgmMath.groovy | 87 - src/main/groovy/genMathModification.groovy | 133 - .../grape/GrabAnnotationTransformation.java | 639 --- src/main/groovy/grape/Grape.java | 236 - src/main/groovy/grape/GrapeEngine.java | 46 - src/main/groovy/grape/GrapeIvy.groovy | 729 ---- src/main/groovy/groovy/beans/Bindable.java | 116 + .../groovy/beans/BindableASTTransformation.java | 428 ++ .../groovy/beans/DefaultPropertyAccessor.java | 34 + .../groovy/beans/DefaultPropertyReader.java | 32 + .../groovy/beans/DefaultPropertyWriter.java | 32 + .../groovy/groovy/beans/ListenerList.groovy | 131 + .../beans/ListenerListASTTransformation.groovy | 384 ++ .../groovy/groovy/beans/PropertyAccessor.java | 25 + .../groovy/groovy/beans/PropertyReader.java | 26 + .../groovy/groovy/beans/PropertyWriter.java | 26 + src/main/groovy/groovy/beans/Vetoable.java | 113 + .../groovy/beans/VetoableASTTransformation.java | 444 ++ .../groovy/cli/CliBuilderException.groovy | 24 + src/main/groovy/groovy/cli/Option.java | 105 + src/main/groovy/groovy/cli/OptionField.groovy | 27 + src/main/groovy/groovy/cli/TypedOption.java | 27 + src/main/groovy/groovy/cli/Unparsed.java | 39 + src/main/groovy/groovy/cli/UnparsedField.groovy | 27 + .../grape/GrabAnnotationTransformation.java | 639 +++ src/main/groovy/groovy/grape/Grape.java | 236 + src/main/groovy/groovy/grape/GrapeEngine.java | 46 + src/main/groovy/groovy/grape/GrapeIvy.groovy | 729 ++++ src/main/groovy/groovy/inspect/Inspector.java | 348 ++ src/main/groovy/groovy/inspect/package.html | 28 + .../groovy/io/EncodingAwareBufferedWriter.java | 58 + src/main/groovy/groovy/io/FileType.java | 31 + src/main/groovy/groovy/io/FileVisitResult.java | 35 + .../groovy/groovy/io/GroovyPrintStream.java | 130 + .../groovy/groovy/io/GroovyPrintWriter.java | 101 + src/main/groovy/groovy/io/LineColumnReader.java | 252 ++ .../groovy/groovy/io/PlatformLineWriter.java | 64 + src/main/groovy/groovy/io/package.html | 28 + .../groovy/groovy/lang/AdaptingMetaClass.java | 43 + .../groovy/lang/BenchmarkInterceptor.java | 126 + src/main/groovy/groovy/lang/Binding.java | 122 + src/main/groovy/groovy/lang/Buildable.java | 24 + src/main/groovy/groovy/lang/Category.java | 105 + src/main/groovy/groovy/lang/Closure.java | 1054 +++++ .../groovy/groovy/lang/ClosureException.java | 38 + .../groovy/lang/ClosureInvokingMethod.java | 48 + src/main/groovy/groovy/lang/Delegate.java | 218 + src/main/groovy/groovy/lang/DelegatesTo.java | 96 + .../groovy/groovy/lang/DelegatingMetaClass.java | 308 ++ .../groovy/lang/DeprecationException.java | 43 + src/main/groovy/groovy/lang/EmptyRange.java | 214 + .../groovy/groovy/lang/ExpandoMetaClass.java | 1510 +++++++ .../lang/ExpandoMetaClassCreationHandle.java | 95 + src/main/groovy/groovy/lang/GString.java | 245 ++ .../groovy/lang/GeneratedGroovyProxy.java | 34 + src/main/groovy/groovy/lang/Grab.java | 143 + src/main/groovy/groovy/lang/GrabConfig.java | 117 + src/main/groovy/groovy/lang/GrabExclude.java | 61 + src/main/groovy/groovy/lang/GrabResolver.java | 86 + src/main/groovy/groovy/lang/Grapes.java | 71 + src/main/groovy/groovy/lang/GroovyCallable.java | 32 + .../groovy/groovy/lang/GroovyClassLoader.java | 1099 +++++ .../groovy/groovy/lang/GroovyCodeSource.java | 266 ++ .../groovy/groovy/lang/GroovyInterceptable.java | 28 + src/main/groovy/groovy/lang/GroovyObject.java | 68 + .../groovy/groovy/lang/GroovyObjectSupport.java | 63 + .../groovy/lang/GroovyResourceLoader.java | 39 + .../groovy/lang/GroovyRuntimeException.java | 88 + src/main/groovy/groovy/lang/GroovyShell.java | 611 +++ src/main/groovy/groovy/lang/GroovySystem.java | 103 + src/main/groovy/groovy/lang/Groovydoc.java | 40 + .../lang/IllegalPropertyAccessException.java | 49 + .../IncorrectClosureArgumentsException.java | 60 + src/main/groovy/groovy/lang/IntRange.java | 440 ++ src/main/groovy/groovy/lang/Interceptor.java | 52 + src/main/groovy/groovy/lang/Lazy.java | 156 + .../groovy/groovy/lang/ListWithDefault.java | 257 ++ src/main/groovy/groovy/lang/MapWithDefault.java | 105 + .../groovy/lang/MetaArrayLengthProperty.java | 56 + .../groovy/groovy/lang/MetaBeanProperty.java | 156 + src/main/groovy/groovy/lang/MetaClass.java | 207 + src/main/groovy/groovy/lang/MetaClassImpl.java | 4021 ++++++++++++++++++ .../groovy/groovy/lang/MetaClassRegistry.java | 192 + .../lang/MetaClassRegistryChangeEvent.java | 104 + .../MetaClassRegistryChangeEventListener.java | 42 + .../groovy/groovy/lang/MetaExpandoProperty.java | 55 + src/main/groovy/groovy/lang/MetaMethod.java | 330 ++ .../groovy/groovy/lang/MetaObjectProtocol.java | 227 + src/main/groovy/groovy/lang/MetaProperty.java | 102 + .../groovy/lang/MissingClassException.java | 53 + .../groovy/lang/MissingFieldException.java | 67 + .../groovy/lang/MissingMethodException.java | 88 + .../groovy/lang/MissingPropertyException.java | 88 + src/main/groovy/groovy/lang/Mixin.java | 42 + .../groovy/groovy/lang/MutableMetaClass.java | 79 + src/main/groovy/groovy/lang/Newify.java | 109 + .../groovy/groovy/lang/NonEmptySequence.java | 47 + src/main/groovy/groovy/lang/NumberRange.java | 629 +++ src/main/groovy/groovy/lang/ObjectRange.java | 539 +++ src/main/groovy/groovy/lang/ParameterArray.java | 50 + .../groovy/lang/PropertyAccessInterceptor.java | 49 + src/main/groovy/groovy/lang/PropertyValue.java | 49 + src/main/groovy/groovy/lang/ProxyMetaClass.java | 242 ++ src/main/groovy/groovy/lang/Range.java | 109 + .../groovy/lang/ReadOnlyPropertyException.java | 36 + src/main/groovy/groovy/lang/Reference.java | 82 + src/main/groovy/groovy/lang/Script.java | 231 + src/main/groovy/groovy/lang/Sequence.java | 224 + src/main/groovy/groovy/lang/Singleton.java | 66 + .../lang/SpreadListEvaluatingException.java | 25 + src/main/groovy/groovy/lang/SpreadMap.java | 120 + .../lang/SpreadMapEvaluatingException.java | 25 + .../groovy/lang/StringWriterIOException.java | 37 + .../groovy/groovy/lang/TracingInterceptor.java | 120 + .../groovy/groovy/lang/TrampolineClosure.java | 111 + src/main/groovy/groovy/lang/Tuple.java | 85 + src/main/groovy/groovy/lang/Tuple1.java | 54 + src/main/groovy/groovy/lang/Tuple2.java | 60 + src/main/groovy/groovy/lang/Tuple3.java | 71 + src/main/groovy/groovy/lang/Tuple4.java | 79 + src/main/groovy/groovy/lang/Tuple5.java | 87 + src/main/groovy/groovy/lang/Tuple6.java | 95 + src/main/groovy/groovy/lang/Tuple7.java | 103 + src/main/groovy/groovy/lang/Tuple8.java | 111 + src/main/groovy/groovy/lang/Tuple9.java | 120 + src/main/groovy/groovy/lang/Writable.java | 56 + .../groovy/groovy/lang/groovydoc/Groovydoc.java | 96 + .../groovy/lang/groovydoc/GroovydocHolder.java | 37 + .../groovy/lang/groovydoc/GroovydocTag.java | 68 + src/main/groovy/groovy/lang/package.html | 28 + .../transform/ASTTestTransformation.groovy | 233 + ...itionalInterruptibleASTTransformation.groovy | 145 + .../ThreadInterruptibleASTTransformation.groovy | 98 + .../TimedInterruptibleASTTransformation.groovy | 321 ++ .../security/GroovyCodeSourcePermission.java | 40 + src/main/groovy/groovy/security/package.html | 30 + src/main/groovy/groovy/time/BaseDuration.java | 141 + .../groovy/time/DatumDependentDuration.java | 141 + src/main/groovy/groovy/time/Duration.java | 119 + src/main/groovy/groovy/time/TimeCategory.java | 203 + .../groovy/time/TimeDatumDependentDuration.java | 81 + src/main/groovy/groovy/time/TimeDuration.java | 102 + src/main/groovy/groovy/time/package.html | 47 + src/main/groovy/groovy/transform/ASTTest.java | 71 + .../groovy/transform/AnnotationCollector.java | 199 + .../transform/AnnotationCollectorMode.java | 50 + src/main/groovy/groovy/transform/AutoClone.java | 281 ++ .../groovy/groovy/transform/AutoCloneStyle.java | 48 + .../groovy/transform/AutoExternalize.groovy | 66 + src/main/groovy/groovy/transform/AutoFinal.java | 99 + .../groovy/groovy/transform/AutoImplement.java | 128 + .../groovy/groovy/transform/BaseScript.java | 154 + .../groovy/groovy/transform/Canonical.groovy | 131 + .../groovy/transform/CompilationUnitAware.java | 30 + .../groovy/transform/CompileDynamic.groovy | 34 + .../groovy/groovy/transform/CompileStatic.java | 63 + .../transform/ConditionalInterrupt.groovy | 155 + .../groovy/transform/EqualsAndHashCode.java | 276 ++ .../groovy/transform/ExternalizeMethods.java | 89 + .../groovy/transform/ExternalizeVerifier.java | 62 + src/main/groovy/groovy/transform/Field.java | 55 + src/main/groovy/groovy/transform/Generated.java | 32 + src/main/groovy/groovy/transform/Immutable.java | 249 ++ .../groovy/transform/IndexedProperty.java | 107 + .../groovy/transform/InheritConstructors.java | 169 + .../groovy/groovy/transform/MapConstructor.java | 128 + src/main/groovy/groovy/transform/Memoized.java | 145 + .../groovy/groovy/transform/PackageScope.java | 71 + .../groovy/transform/PackageScopeTarget.java | 47 + src/main/groovy/groovy/transform/SelfType.java | 82 + src/main/groovy/groovy/transform/Sortable.java | 179 + src/main/groovy/groovy/transform/SourceURI.java | 55 + .../groovy/groovy/transform/Synchronized.java | 170 + .../groovy/transform/TailRecursive.groovy | 87 + .../groovy/transform/ThreadInterrupt.groovy | 148 + .../groovy/transform/TimedInterrupt.groovy | 142 + src/main/groovy/groovy/transform/ToString.java | 339 ++ src/main/groovy/groovy/transform/Trait.java | 38 + .../groovy/transform/TupleConstructor.java | 278 ++ .../groovy/groovy/transform/TypeChecked.java | 70 + .../groovy/transform/TypeCheckingMode.java | 31 + src/main/groovy/groovy/transform/Undefined.java | 37 + .../groovy/groovy/transform/WithReadLock.java | 107 + .../groovy/groovy/transform/WithWriteLock.java | 107 + .../groovy/transform/builder/Builder.java | 160 + .../transform/builder/DefaultStrategy.java | 293 ++ .../transform/builder/ExternalStrategy.java | 158 + .../transform/builder/InitializerStrategy.java | 388 ++ .../transform/builder/SimpleStrategy.java | 132 + .../groovy/transform/stc/ClosureParams.java | 64 + .../stc/ClosureSignatureConflictResolver.java | 54 + .../transform/stc/ClosureSignatureHint.java | 144 + .../groovy/groovy/transform/stc/FirstParam.java | 93 + .../transform/stc/FromAbstractTypeMethods.java | 68 + .../groovy/groovy/transform/stc/FromString.java | 80 + .../stc/IncorrectTypeHintException.java | 32 + .../transform/stc/MapEntryOrKeyValue.java | 119 + .../transform/stc/PickAnyArgumentHint.java | 75 + .../groovy/transform/stc/PickFirstResolver.java | 45 + .../groovy/transform/stc/SecondParam.java | 93 + .../groovy/groovy/transform/stc/SimpleType.java | 36 + .../stc/SingleSignatureClosureHint.java | 44 + .../groovy/groovy/transform/stc/ThirdParam.java | 94 + src/main/groovy/groovy/ui/GroovyMain.java | 597 +++ .../groovy/groovy/ui/GroovySocketServer.java | 226 + .../groovy/groovy/util/AbstractFactory.java | 63 + .../groovy/groovy/util/BufferedIterator.java | 31 + src/main/groovy/groovy/util/BuilderSupport.java | 228 + src/main/groovy/groovy/util/CharsetToolkit.java | 419 ++ src/main/groovy/groovy/util/CliBuilder.groovy | 798 ++++ .../groovy/groovy/util/ClosureComparator.java | 45 + src/main/groovy/groovy/util/ConfigObject.java | 425 ++ .../groovy/groovy/util/ConfigSlurper.groovy | 309 ++ .../groovy/groovy/util/DelegatingScript.java | 141 + src/main/groovy/groovy/util/Eval.java | 124 + src/main/groovy/groovy/util/Expando.java | 175 + src/main/groovy/groovy/util/Factory.java | 90 + .../groovy/util/FactoryBuilderSupport.java | 1363 ++++++ .../groovy/util/FileNameByRegexFinder.groovy | 43 + .../groovy/groovy/util/FileTreeBuilder.groovy | 183 + .../groovy/groovy/util/GroovyCollections.java | 293 ++ .../groovy/groovy/util/GroovyScriptEngine.java | 694 +++ .../groovy/groovy/util/IFileNameFinder.java | 26 + src/main/groovy/groovy/util/IndentPrinter.java | 234 + src/main/groovy/groovy/util/MapEntry.java | 83 + src/main/groovy/groovy/util/Node.java | 787 ++++ src/main/groovy/groovy/util/NodeBuilder.java | 57 + src/main/groovy/groovy/util/NodeList.java | 202 + src/main/groovy/groovy/util/NodePrinter.java | 130 + .../groovy/groovy/util/ObjectGraphBuilder.java | 857 ++++ src/main/groovy/groovy/util/ObservableList.java | 570 +++ src/main/groovy/groovy/util/ObservableMap.java | 410 ++ src/main/groovy/groovy/util/ObservableSet.java | 427 ++ src/main/groovy/groovy/util/OrderBy.java | 96 + .../groovy/util/PermutationGenerator.java | 149 + src/main/groovy/groovy/util/Proxy.java | 70 + src/main/groovy/groovy/util/ProxyGenerator.java | 339 ++ .../groovy/groovy/util/ResourceConnector.java | 37 + .../groovy/groovy/util/ResourceException.java | 56 + .../groovy/groovy/util/ScriptException.java | 55 + .../groovy/groovy/util/logging/Commons.java | 108 + src/main/groovy/groovy/util/logging/Log.java | 124 + src/main/groovy/groovy/util/logging/Log4j.java | 119 + src/main/groovy/groovy/util/logging/Log4j2.java | 105 + src/main/groovy/groovy/util/logging/Slf4j.java | 108 + src/main/groovy/groovy/util/package.html | 28 + src/main/groovy/groovy/xml/QName.java | 287 ++ src/main/groovy/inspect/Inspector.java | 348 -- src/main/groovy/inspect/package.html | 28 - .../groovy/io/EncodingAwareBufferedWriter.java | 58 - src/main/groovy/io/FileType.java | 31 - src/main/groovy/io/FileVisitResult.java | 35 - src/main/groovy/io/GroovyPrintStream.java | 130 - src/main/groovy/io/GroovyPrintWriter.java | 101 - src/main/groovy/io/LineColumnReader.java | 252 -- src/main/groovy/io/PlatformLineWriter.java | 64 - src/main/groovy/io/package.html | 28 - src/main/groovy/lang/AdaptingMetaClass.java | 43 - src/main/groovy/lang/BenchmarkInterceptor.java | 126 - src/main/groovy/lang/Binding.java | 122 - src/main/groovy/lang/Buildable.java | 24 - src/main/groovy/lang/Category.java | 105 - src/main/groovy/lang/Closure.java | 1054 ----- src/main/groovy/lang/ClosureException.java | 38 - src/main/groovy/lang/ClosureInvokingMethod.java | 48 - src/main/groovy/lang/Delegate.java | 218 - src/main/groovy/lang/DelegatesTo.java | 96 - src/main/groovy/lang/DelegatingMetaClass.java | 308 -- src/main/groovy/lang/DeprecationException.java | 43 - src/main/groovy/lang/EmptyRange.java | 214 - src/main/groovy/lang/ExpandoMetaClass.java | 1510 ------- .../lang/ExpandoMetaClassCreationHandle.java | 95 - src/main/groovy/lang/GString.java | 245 -- src/main/groovy/lang/GeneratedGroovyProxy.java | 34 - src/main/groovy/lang/Grab.java | 143 - src/main/groovy/lang/GrabConfig.java | 117 - src/main/groovy/lang/GrabExclude.java | 61 - src/main/groovy/lang/GrabResolver.java | 86 - src/main/groovy/lang/Grapes.java | 71 - src/main/groovy/lang/GroovyCallable.java | 32 - src/main/groovy/lang/GroovyClassLoader.java | 1099 ----- src/main/groovy/lang/GroovyCodeSource.java | 266 -- src/main/groovy/lang/GroovyInterceptable.java | 28 - src/main/groovy/lang/GroovyObject.java | 68 - src/main/groovy/lang/GroovyObjectSupport.java | 63 - src/main/groovy/lang/GroovyResourceLoader.java | 39 - .../groovy/lang/GroovyRuntimeException.java | 88 - src/main/groovy/lang/GroovyShell.java | 611 --- src/main/groovy/lang/GroovySystem.java | 103 - src/main/groovy/lang/Groovydoc.java | 40 - .../lang/IllegalPropertyAccessException.java | 49 - .../IncorrectClosureArgumentsException.java | 60 - src/main/groovy/lang/IntRange.java | 440 -- src/main/groovy/lang/Interceptor.java | 52 - src/main/groovy/lang/Lazy.java | 156 - src/main/groovy/lang/ListWithDefault.java | 257 -- src/main/groovy/lang/MapWithDefault.java | 105 - .../groovy/lang/MetaArrayLengthProperty.java | 56 - src/main/groovy/lang/MetaBeanProperty.java | 156 - src/main/groovy/lang/MetaClass.java | 207 - src/main/groovy/lang/MetaClassImpl.java | 4021 ------------------ src/main/groovy/lang/MetaClassRegistry.java | 192 - .../lang/MetaClassRegistryChangeEvent.java | 104 - .../MetaClassRegistryChangeEventListener.java | 42 - src/main/groovy/lang/MetaExpandoProperty.java | 55 - src/main/groovy/lang/MetaMethod.java | 330 -- src/main/groovy/lang/MetaObjectProtocol.java | 227 - src/main/groovy/lang/MetaProperty.java | 102 - src/main/groovy/lang/MissingClassException.java | 53 - src/main/groovy/lang/MissingFieldException.java | 67 - .../groovy/lang/MissingMethodException.java | 88 - .../groovy/lang/MissingPropertyException.java | 88 - src/main/groovy/lang/Mixin.java | 42 - src/main/groovy/lang/MutableMetaClass.java | 79 - src/main/groovy/lang/Newify.java | 109 - src/main/groovy/lang/NonEmptySequence.java | 47 - src/main/groovy/lang/NumberRange.java | 629 --- src/main/groovy/lang/ObjectRange.java | 539 --- src/main/groovy/lang/ParameterArray.java | 50 - .../groovy/lang/PropertyAccessInterceptor.java | 49 - src/main/groovy/lang/PropertyValue.java | 49 - src/main/groovy/lang/ProxyMetaClass.java | 242 -- src/main/groovy/lang/Range.java | 109 - .../groovy/lang/ReadOnlyPropertyException.java | 36 - src/main/groovy/lang/Reference.java | 82 - src/main/groovy/lang/Script.java | 231 - src/main/groovy/lang/Sequence.java | 224 - src/main/groovy/lang/Singleton.java | 66 - .../lang/SpreadListEvaluatingException.java | 25 - src/main/groovy/lang/SpreadMap.java | 120 - .../lang/SpreadMapEvaluatingException.java | 25 - .../groovy/lang/StringWriterIOException.java | 37 - src/main/groovy/lang/TracingInterceptor.java | 120 - src/main/groovy/lang/TrampolineClosure.java | 111 - src/main/groovy/lang/Tuple.java | 85 - src/main/groovy/lang/Tuple1.java | 54 - src/main/groovy/lang/Tuple2.java | 60 - src/main/groovy/lang/Tuple3.java | 71 - src/main/groovy/lang/Tuple4.java | 79 - src/main/groovy/lang/Tuple5.java | 87 - src/main/groovy/lang/Tuple6.java | 95 - src/main/groovy/lang/Tuple7.java | 103 - src/main/groovy/lang/Tuple8.java | 111 - src/main/groovy/lang/Tuple9.java | 120 - src/main/groovy/lang/Writable.java | 56 - src/main/groovy/lang/groovydoc/Groovydoc.java | 96 - .../groovy/lang/groovydoc/GroovydocHolder.java | 37 - .../groovy/lang/groovydoc/GroovydocTag.java | 68 - src/main/groovy/lang/package.html | 28 - .../groovy/ast/builder/AstBuilder.groovy | 145 + .../ast/builder/AstSpecificationCompiler.groovy | 1080 +++++ .../groovy/ast/builder/AstStringCompiler.groovy | 63 + .../groovy/classgen/genArrayAccess.groovy | 146 + .../codehaus/groovy/classgen/genArrays.groovy | 53 + .../codehaus/groovy/classgen/genDgmMath.groovy | 87 + .../groovy/classgen/genMathModification.groovy | 133 + .../ASTTransformationCustomizer.groovy | 301 ++ .../ASTTransformationCustomizerFactory.groovy | 60 + .../builder/CompilerCustomizationBuilder.groovy | 64 + .../org/codehaus/groovy/tools/GrapeMain.groovy | 308 ++ .../groovy/tools/ast/TransformTestHelper.groovy | 123 + .../transform/ASTTestTransformation.groovy | 233 - ...itionalInterruptibleASTTransformation.groovy | 145 - .../ThreadInterruptibleASTTransformation.groovy | 98 - .../TimedInterruptibleASTTransformation.groovy | 321 -- .../groovy/transform/tailrec/AstHelper.groovy | 76 + .../tailrec/CollectRecursiveCalls.groovy | 62 + .../transform/tailrec/HasRecursiveCalls.groovy | 64 + .../transform/tailrec/InWhileLoopWrapper.groovy | 81 + .../tailrec/RecursivenessTester.groovy | 100 + .../tailrec/ReturnAdderForClosures.groovy | 48 + .../ReturnStatementToIterationConverter.groovy | 148 + .../transform/tailrec/StatementReplacer.groovy | 109 + .../TailRecursiveASTTransformation.groovy | 261 ++ .../TernaryToIfStatementConverter.groovy | 42 + .../tailrec/VariableAccessReplacer.groovy | 73 + .../tailrec/VariableExpressionReplacer.groovy | 171 + .../VariableExpressionTransformer.groovy | 47 + .../org/codehaus/groovy/util/StringUtil.groovy | 57 + .../security/GroovyCodeSourcePermission.java | 40 - src/main/groovy/security/package.html | 30 - src/main/groovy/time/BaseDuration.java | 141 - .../groovy/time/DatumDependentDuration.java | 141 - src/main/groovy/time/Duration.java | 119 - src/main/groovy/time/TimeCategory.java | 203 - .../groovy/time/TimeDatumDependentDuration.java | 81 - src/main/groovy/time/TimeDuration.java | 102 - src/main/groovy/time/package.html | 47 - src/main/groovy/transform/ASTTest.java | 71 - .../groovy/transform/AnnotationCollector.java | 199 - .../transform/AnnotationCollectorMode.java | 50 - src/main/groovy/transform/AutoClone.java | 281 -- src/main/groovy/transform/AutoCloneStyle.java | 48 - .../groovy/transform/AutoExternalize.groovy | 66 - src/main/groovy/transform/AutoFinal.java | 99 - src/main/groovy/transform/AutoImplement.java | 128 - src/main/groovy/transform/BaseScript.java | 154 - src/main/groovy/transform/Canonical.groovy | 131 - .../groovy/transform/CompilationUnitAware.java | 30 - src/main/groovy/transform/CompileDynamic.groovy | 34 - src/main/groovy/transform/CompileStatic.java | 63 - .../transform/ConditionalInterrupt.groovy | 155 - .../groovy/transform/EqualsAndHashCode.java | 276 -- .../groovy/transform/ExternalizeMethods.java | 89 - .../groovy/transform/ExternalizeVerifier.java | 62 - src/main/groovy/transform/Field.java | 55 - src/main/groovy/transform/Generated.java | 32 - src/main/groovy/transform/Immutable.java | 249 -- src/main/groovy/transform/IndexedProperty.java | 107 - .../groovy/transform/InheritConstructors.java | 169 - src/main/groovy/transform/MapConstructor.java | 128 - src/main/groovy/transform/Memoized.java | 145 - src/main/groovy/transform/PackageScope.java | 71 - .../groovy/transform/PackageScopeTarget.java | 47 - src/main/groovy/transform/SelfType.java | 82 - src/main/groovy/transform/Sortable.java | 179 - src/main/groovy/transform/SourceURI.java | 55 - src/main/groovy/transform/Synchronized.java | 170 - src/main/groovy/transform/TailRecursive.groovy | 87 - .../groovy/transform/ThreadInterrupt.groovy | 148 - src/main/groovy/transform/TimedInterrupt.groovy | 142 - src/main/groovy/transform/ToString.java | 339 -- src/main/groovy/transform/Trait.java | 38 - src/main/groovy/transform/TupleConstructor.java | 278 -- src/main/groovy/transform/TypeChecked.java | 70 - src/main/groovy/transform/TypeCheckingMode.java | 31 - src/main/groovy/transform/Undefined.java | 37 - src/main/groovy/transform/WithReadLock.java | 107 - src/main/groovy/transform/WithWriteLock.java | 107 - src/main/groovy/transform/builder/Builder.java | 160 - .../transform/builder/DefaultStrategy.java | 293 -- .../transform/builder/ExternalStrategy.java | 158 - .../transform/builder/InitializerStrategy.java | 388 -- .../transform/builder/SimpleStrategy.java | 132 - .../groovy/transform/stc/ClosureParams.java | 64 - .../stc/ClosureSignatureConflictResolver.java | 54 - .../transform/stc/ClosureSignatureHint.java | 144 - src/main/groovy/transform/stc/FirstParam.java | 93 - .../transform/stc/FromAbstractTypeMethods.java | 68 - src/main/groovy/transform/stc/FromString.java | 80 - .../stc/IncorrectTypeHintException.java | 32 - .../transform/stc/MapEntryOrKeyValue.java | 119 - .../transform/stc/PickAnyArgumentHint.java | 75 - .../groovy/transform/stc/PickFirstResolver.java | 45 - src/main/groovy/transform/stc/SecondParam.java | 93 - src/main/groovy/transform/stc/SimpleType.java | 36 - .../stc/SingleSignatureClosureHint.java | 44 - src/main/groovy/transform/stc/ThirdParam.java | 94 - src/main/groovy/ui/GroovyMain.java | 597 --- src/main/groovy/ui/GroovySocketServer.java | 226 - src/main/groovy/util/AbstractFactory.java | 63 - src/main/groovy/util/BufferedIterator.java | 31 - src/main/groovy/util/BuilderSupport.java | 228 - src/main/groovy/util/CharsetToolkit.java | 419 -- src/main/groovy/util/CliBuilder.groovy | 798 ---- src/main/groovy/util/ClosureComparator.java | 45 - src/main/groovy/util/ConfigObject.java | 425 -- src/main/groovy/util/ConfigSlurper.groovy | 309 -- src/main/groovy/util/DelegatingScript.java | 141 - src/main/groovy/util/Eval.java | 124 - src/main/groovy/util/Expando.java | 175 - src/main/groovy/util/Factory.java | 90 - src/main/groovy/util/FactoryBuilderSupport.java | 1363 ------ .../groovy/util/FileNameByRegexFinder.groovy | 43 - src/main/groovy/util/FileTreeBuilder.groovy | 183 - src/main/groovy/util/GroovyCollections.java | 293 -- src/main/groovy/util/GroovyScriptEngine.java | 694 --- src/main/groovy/util/IFileNameFinder.java | 26 - src/main/groovy/util/IndentPrinter.java | 234 - src/main/groovy/util/MapEntry.java | 83 - src/main/groovy/util/Node.java | 787 ---- src/main/groovy/util/NodeBuilder.java | 57 - src/main/groovy/util/NodeList.java | 202 - src/main/groovy/util/NodePrinter.java | 130 - src/main/groovy/util/ObjectGraphBuilder.java | 857 ---- src/main/groovy/util/ObservableList.java | 570 --- src/main/groovy/util/ObservableMap.java | 410 -- src/main/groovy/util/ObservableSet.java | 427 -- src/main/groovy/util/OrderBy.java | 96 - src/main/groovy/util/PermutationGenerator.java | 149 - src/main/groovy/util/Proxy.java | 70 - src/main/groovy/util/ProxyGenerator.java | 339 -- src/main/groovy/util/ResourceConnector.java | 37 - src/main/groovy/util/ResourceException.java | 56 - src/main/groovy/util/ScriptException.java | 55 - src/main/groovy/util/logging/Commons.java | 108 - src/main/groovy/util/logging/Log.java | 124 - src/main/groovy/util/logging/Log4j.java | 119 - src/main/groovy/util/logging/Log4j2.java | 105 - src/main/groovy/util/logging/Slf4j.java | 108 - src/main/groovy/util/package.html | 28 - src/main/groovy/xml/QName.java | 287 -- 534 files changed, 47376 insertions(+), 47376 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/groovy/blob/10110145/src/main/groovy/ASTTransformationCustomizer.groovy ---------------------------------------------------------------------- diff --git a/src/main/groovy/ASTTransformationCustomizer.groovy b/src/main/groovy/ASTTransformationCustomizer.groovy deleted file mode 100644 index 7e84968..0000000 --- a/src/main/groovy/ASTTransformationCustomizer.groovy +++ /dev/null @@ -1,301 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.codehaus.groovy.control.customizers - -import groovy.transform.CompilationUnitAware -import org.codehaus.groovy.ast.ASTNode -import org.codehaus.groovy.ast.AnnotationNode -import org.codehaus.groovy.ast.ClassHelper -import org.codehaus.groovy.ast.ClassNode -import org.codehaus.groovy.ast.expr.ClassExpression -import org.codehaus.groovy.ast.expr.ClosureExpression -import org.codehaus.groovy.ast.expr.ConstantExpression -import org.codehaus.groovy.ast.expr.Expression -import org.codehaus.groovy.ast.expr.ListExpression -import org.codehaus.groovy.classgen.GeneratorContext -import org.codehaus.groovy.control.CompilationUnit -import org.codehaus.groovy.control.CompilePhase -import org.codehaus.groovy.control.SourceUnit -import org.codehaus.groovy.transform.ASTTransformation -import org.codehaus.groovy.transform.GroovyASTTransformation -import org.codehaus.groovy.transform.GroovyASTTransformationClass - -import java.lang.annotation.Annotation - -/** - * This customizer allows applying an AST transformation to a source unit with - * several strategies. - * - * Creating a customizer with the {@link ASTTransformationCustomizer#ASTTransformationCustomizer(Class) - * class constructor} will trigger an AST transformation for - * each class node of a source unit. However, you cannot pass parameters to the annotation so the default values - * will be used. Writing : - * <pre> - * def configuration = new CompilerConfiguration() - * configuration.addCompilationCustomizers(new ASTTransformationCustomizer(Log)) - * def shell = new GroovyShell(configuration) - * shell.evaluate(""" - * class MyClass { - * - * }""") - * </pre> - * - * is equivalent to : - * - * <pre> - * def shell = new GroovyShell() - * shell.evaluate(""" - * @Log - * class MyClass { - * - * }""") - * </pre> - * - * The class passed as a constructor parameter must be an AST transformation annotation. - * - * Alternatively, you can apply a global AST transformation by calling the - * {@link ASTTransformationCustomizer#ASTTransformationCustomizer(ASTTransformation) AST transformation - * constructor}. In that case, the transformation is applied once for the whole source unit. - * - * Unlike a global AST transformation declared in the META-INF/services/org.codehaus.groovy.transform.ASTTransformation - * file, which are applied if the file is in the classpath, using this customizer you'll have the choice to apply - * your transformation selectively. It can also be useful to debug global AST transformations without having to - * package your annotation in a jar file. - * - * @author Cedric Champeau - * - * @since 1.8.0 - * - */ -class ASTTransformationCustomizer extends CompilationCustomizer implements CompilationUnitAware { - private final AnnotationNode annotationNode; - final ASTTransformation transformation - - protected CompilationUnit compilationUnit; - private boolean applied = false; // used for global AST transformations - - /** - * Creates an AST transformation customizer using the specified annotation. The transformation classloader can - * be used if the transformation class cannot be loaded from the same class loader as the annotation class. - * It's assumed that the annotation is not annotated with {@code GroovyASTTransformationClass} and so the - * second argument supplies the link to the ASTTransformation class that should be used. - * @param transformationAnnotation - * @param astTransformationClassName - * @param transformationClassLoader - */ - ASTTransformationCustomizer(final Class<? extends Annotation> transformationAnnotation, String astTransformationClassName, ClassLoader transformationClassLoader) { - super(findPhase(transformationAnnotation, astTransformationClassName, transformationClassLoader)) - final Class<ASTTransformation> clazz = findASTTranformationClass(transformationAnnotation, astTransformationClassName, transformationClassLoader) - this.transformation = clazz.newInstance() - this.annotationNode = new AnnotationNode(ClassHelper.make(transformationAnnotation)) - } - - /** - * Creates an AST transformation customizer using the specified annotation. It's assumed that the annotation - * is not annotated with {@code GroovyASTTransformationClass} and so the second argument supplies the link to - * the ASTTransformation class that should be used. - * @param transformationAnnotation - * @param astTransformationClassName - */ - ASTTransformationCustomizer(final Class<? extends Annotation> transformationAnnotation, String astTransformationClassName) { - this(transformationAnnotation, astTransformationClassName, transformationAnnotation.classLoader) - } - - /** - * Creates an AST transformation customizer using the specified annotation. The transformation classloader can - * be used if the transformation class cannot be loaded from the same class loader as the annotation class. - * Additionally, you can pass a map of parameters that will be used to parameterize the annotation. - * It's assumed that the annotation is not annotated with {@code GroovyASTTransformationClass} and so the - * second argument supplies the link to the ASTTransformation class that should be used. - * @param transformationAnnotation - * @param astTransformationClassName - * @param transformationClassLoader - */ - ASTTransformationCustomizer(final Map annotationParams, final Class<? extends Annotation> transformationAnnotation, String astTransformationClassName, ClassLoader transformationClassLoader) { - super(findPhase(transformationAnnotation, astTransformationClassName, transformationClassLoader)) - final Class<ASTTransformation> clazz = findASTTranformationClass(transformationAnnotation, astTransformationClassName, transformationClassLoader) - this.transformation = clazz.newInstance() - this.annotationNode = new AnnotationNode(ClassHelper.make(transformationAnnotation)) - setAnnotationParameters(annotationParams) - } - - ASTTransformationCustomizer(final Map annotationParams, final Class<? extends Annotation> transformationAnnotation, String astTransformationClassName) { - this(annotationParams, transformationAnnotation, transformationAnnotation.classLoader) - } - - /** - * Creates an AST transformation customizer using the specified annotation. The transformation classloader can - * be used if the transformation class cannot be loaded from the same class loader as the annotation class. - * @param transformationAnnotation - * @param transformationClassLoader - */ - ASTTransformationCustomizer(final Class<? extends Annotation> transformationAnnotation, ClassLoader transformationClassLoader) { - super(findPhase(transformationAnnotation, transformationClassLoader)) - final Class<ASTTransformation> clazz = findASTTranformationClass(transformationAnnotation, transformationClassLoader) - this.transformation = clazz.newInstance() - this.annotationNode = new AnnotationNode(ClassHelper.make(transformationAnnotation)) - } - - /** - * Creates an AST transformation customizer using the specified annotation. - * @param transformationAnnotation - */ - ASTTransformationCustomizer(final Class<? extends Annotation> transformationAnnotation) { - this(transformationAnnotation, transformationAnnotation.classLoader) - } - - /** - * Creates an AST transformation customizer using the specified transformation. - */ - ASTTransformationCustomizer(final ASTTransformation transformation) { - super(findPhase(transformation)) - this.transformation = transformation - this.annotationNode = null - } - - /** - * Creates an AST transformation customizer using the specified annotation. The transformation classloader can - * be used if the transformation class cannot be loaded from the same class loader as the annotation class. - * Additionally, you can pass a map of parameters that will be used to parameterize the annotation. - * @param transformationAnnotation - * @param transformationClassLoader - */ - ASTTransformationCustomizer(final Map annotationParams, final Class<? extends Annotation> transformationAnnotation, ClassLoader transformationClassLoader) { - super(findPhase(transformationAnnotation, transformationClassLoader)) - final Class<ASTTransformation> clazz = findASTTranformationClass(transformationAnnotation, transformationClassLoader) - this.transformation = clazz.newInstance() - this.annotationNode = new AnnotationNode(ClassHelper.make(transformationAnnotation)) - setAnnotationParameters(annotationParams) - } - - ASTTransformationCustomizer(final Map annotationParams, final Class<? extends Annotation> transformationAnnotation) { - this(annotationParams, transformationAnnotation, transformationAnnotation.classLoader) - } - - ASTTransformationCustomizer(final Map annotationParams, final ASTTransformation transformation) { - this(transformation) - setAnnotationParameters(annotationParams) - } - - void setCompilationUnit(CompilationUnit unit) { - compilationUnit = unit - } - - private static Class<ASTTransformation> findASTTranformationClass(Class<? extends Annotation> anAnnotationClass, ClassLoader transformationClassLoader) { - final GroovyASTTransformationClass annotation = anAnnotationClass.getAnnotation(GroovyASTTransformationClass) - if (annotation==null) throw new IllegalArgumentException("Provided class doesn't look like an AST @interface") - - Class[] classes = annotation.classes() - String[] classesAsStrings = annotation.value() - if (classes.length+classesAsStrings.length>1) { - throw new IllegalArgumentException("AST transformation customizer doesn't support AST transforms with multiple classes") - } - return classes?classes[0]:Class.forName(classesAsStrings[0], true, transformationClassLoader?:anAnnotationClass.classLoader) - } - - private static Class<ASTTransformation> findASTTranformationClass(Class<? extends Annotation> anAnnotationClass, String astTransformationClassName, ClassLoader transformationClassLoader) { - return Class.forName(astTransformationClassName, true, transformationClassLoader?:anAnnotationClass.classLoader) as Class<ASTTransformation> - } - - private static CompilePhase findPhase(ASTTransformation transformation) { - if (transformation==null) throw new IllegalArgumentException("Provided transformation must not be null") - final Class<?> clazz = transformation.class - final GroovyASTTransformation annotation = clazz.getAnnotation(GroovyASTTransformation) - if (annotation==null) throw new IllegalArgumentException("Provided ast transformation is not annotated with "+GroovyASTTransformation.name) - - annotation.phase() - } - - private static CompilePhase findPhase(Class<? extends Annotation> annotationClass, ClassLoader transformationClassLoader) { - Class<ASTTransformation> clazz = findASTTranformationClass(annotationClass, transformationClassLoader); - - findPhase(clazz.newInstance()) - } - - private static CompilePhase findPhase(Class<? extends Annotation> annotationClass, String astTransformationClassName, ClassLoader transformationClassLoader) { - Class<ASTTransformation> clazz = findASTTranformationClass(annotationClass, astTransformationClassName, transformationClassLoader); - - findPhase(clazz.newInstance()) - } - - /** - * Specify annotation parameters. For example, if the annotation is : - * <pre>@Log(value='logger')</pre> - * You could create an AST transformation customizer and specify the "value" parameter thanks to this method: - * <pre>annotationParameters = [value: 'logger'] - * - * Note that you cannot specify annotation closure values directly. If the annotation you want to add takes - * a closure as an argument, you will have to set a {@link ClosureExpression} instead. This can be done by either - * creating a custom {@link ClosureExpression} from code, or using the {@link org.codehaus.groovy.ast.builder.AstBuilder}. - * - * Here is an example : - * <pre> - * // add @Contract({distance >= 0 }) - * customizer = new ASTTransformationCustomizer(Contract) - * final expression = new AstBuilder().buildFromCode(CompilePhase.CONVERSION) {-> - * distance >= 0 - * }.expression[0] - * customizer.annotationParameters = [value: expression]</pre> - * - * @param params the annotation parameters - * - * @since 1.8.1 - */ - public void setAnnotationParameters(Map<String,Object> params) { - if (params==null || annotationNode==null) return; - params.each { key, value -> - if (!annotationNode.classNode.getMethod(key)) { - throw new IllegalArgumentException("${annotationNode.classNode.name} does not accept any [$key] parameter") - } - if (value instanceof Closure) { - throw new IllegalArgumentException("Direct usage of closure is not supported by the AST " + - "compilation customizer. Please use ClosureExpression instead.") - } else if (value instanceof Expression) { - // avoid NPEs due to missing source code - value.setLineNumber(0) - value.setLastLineNumber(0) - annotationNode.addMember(key, value) - } else if (value instanceof Class) { - annotationNode.addMember(key, new ClassExpression(ClassHelper.make(value))) - } else if (value instanceof List) { - annotationNode.addMember(key, new ListExpression(value.collect { - it instanceof Class ? new ClassExpression(ClassHelper.make(it)) : new ConstantExpression(it) - })) - } else { - annotationNode.addMember(key, new ConstantExpression(value)) - } - } - } - - @Override - void call(SourceUnit source, GeneratorContext context, ClassNode classNode) { - if (transformation instanceof CompilationUnitAware) { - transformation.compilationUnit = compilationUnit - } - if (annotationNode!=null) { - // this is a local ast transformation which is applied on every class node - annotationNode.sourcePosition = classNode - transformation.visit([annotationNode, classNode] as ASTNode[], source) - } else { - // this is a global AST transformation - if (!applied) transformation.visit(null, source) - } - applied = true - } -} http://git-wip-us.apache.org/repos/asf/groovy/blob/10110145/src/main/groovy/ASTTransformationCustomizerFactory.groovy ---------------------------------------------------------------------- diff --git a/src/main/groovy/ASTTransformationCustomizerFactory.groovy b/src/main/groovy/ASTTransformationCustomizerFactory.groovy deleted file mode 100644 index 4e4f5be..0000000 --- a/src/main/groovy/ASTTransformationCustomizerFactory.groovy +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.codehaus.groovy.control.customizers.builder - -import groovy.transform.CompileStatic -import org.codehaus.groovy.control.customizers.ASTTransformationCustomizer - -/** - * This factory generates an {@link ASTTransformationCustomizer ast transformation customizer}. - * <p> - * Simple syntax: - * <pre>builder.ast(ToString)</pre> - * With AST transformation options: - * <pre>builder.ast(includeNames:true, ToString)</pre> - * - * @author Cedric Champeau - * @since 2.1.0 - */ -class ASTTransformationCustomizerFactory extends AbstractFactory { - - @Override - @CompileStatic - public boolean isLeaf() { - true - } - - @Override - @CompileStatic - public boolean onHandleNodeAttributes(final FactoryBuilderSupport builder, final Object node, final Map attributes) { - false - } - - @Override - public Object newInstance(final FactoryBuilderSupport builder, final Object name, final Object value, final Map attributes) throws InstantiationException, IllegalAccessException { - ASTTransformationCustomizer customizer - if (attributes) { - customizer = new ASTTransformationCustomizer(attributes, value) - } else { - customizer = new ASTTransformationCustomizer(value) - } - customizer - } -} http://git-wip-us.apache.org/repos/asf/groovy/blob/10110145/src/main/groovy/AstBuilder.groovy ---------------------------------------------------------------------- diff --git a/src/main/groovy/AstBuilder.groovy b/src/main/groovy/AstBuilder.groovy deleted file mode 100644 index 06d027b..0000000 --- a/src/main/groovy/AstBuilder.groovy +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.codehaus.groovy.ast.builder - -import org.codehaus.groovy.ast.ASTNode -import org.codehaus.groovy.ast.stmt.BlockStatement -import org.codehaus.groovy.control.CompilePhase - -/** - * The AstBuilder provides several ways to build an abstract syntax tree (AST) of Groovy code. - * - * You can convert a String into AST using the buildFromString method. - * You can convert code into AST using the buildFromCode method. - * You can use the AST DSL with the buildFromSpec method. - * - * For more information, see the resources on the Groovy wiki pages. - * - * @author Hamlet D'Arcy - */ - -public class AstBuilder { - - /** - * Builds AST based on the code within the {@link Closure} parameter. - * - * This method <strong>must</strong> be invoked at compile time and never at runtime, because - * an ASTTransformation must be run to support it. If you receive an IllegalStateException then - * you most likely need to add stronger typing. For instance, this will not work: - * <code> - * def builder = new AstBuilder() - * builder.buildFromCode { - * // some code - * } - * </code> - * While this code will: - * <code> - * new AstBuilder().buildFromCode { - * // some code - * } - * </code> - * - * The compiler rewrites buildFromCode invocations into {@link AstBuilder#buildFromString(CompilePhase, boolean, String)} - * invocations. An exception raised during AST generation will show a stack trace from {@link AstBuilder#buildFromString(CompilePhase, boolean, String)} - * and not from {@link AstBuilder#buildFromCode(CompilePhase, boolean, Closure)} . - * - * The compiler saves the source code of the closure as a String within the Java class file. The String source - * of the closure will be visible and un-obfuscated within the class file. If your Closure parameter contains - * sensitive data such as a hard-coded password then that data is free to be seen by anyone with the class file. - * Do not store sensitive data within the closure parameter. - * - * @param phase - * the {@link CompilePhase} the AST will be targeted towards. Default is {@link CompilePhase#CLASS_GENERATION} - * @param statementsOnly - * when true, only the script statements are returned. WHen false, you will - * receive back a Script class node also. Default is true. - * @param block - * the code that will be converted - * @returns a List of {@link ASTNode} . - * @throws IllegalStateException - * this method may not be invoked at runtime. It works via a compile-time transformation - * of the closure source code into a String, which is sent to the {@link AstBuilder#buildFromString(CompilePhase, boolean, String)} - * method. The buildFromCode() method must be invoked against a strongly typed AstBuilder. - */ - List<ASTNode> buildFromCode(CompilePhase phase = CompilePhase.CLASS_GENERATION, boolean statementsOnly = true, Closure block) { - throw new IllegalStateException("""AstBuilder.build(CompilePhase, boolean, Closure):List<ASTNode> should never be called at runtime. -Are you sure you are using it correctly? -""") - } - - - /** - * Builds AST based on the code within the String parameter. - * - * @param phase - * the {@link CompilePhase} the AST will be targeted towards. Default is {@link CompilePhase#CLASS_GENERATION} - * @param statementsOnly - * when true, only the script statements are returned. WHen false, you will - * receive back a Script class node also. Default is true. - * @param source - * The source code String that will be compiled. - * @returns a List of {@link ASTNode} . - * @throws IllegalArgumentException - * if source is null or empty - */ - List<ASTNode> buildFromString(CompilePhase phase = CompilePhase.CLASS_GENERATION, boolean statementsOnly = true, String source) { - if (!source || "" == source.trim()) throw new IllegalArgumentException("A source must be specified") - return new AstStringCompiler().compile(source, phase, statementsOnly); - } - - /** - * Builds AST based on the code within the String parameter. The parameter is assumed to be - * a code block which is not legal Groovy code. A goto label is affixed to the block, compiled, - * and the resulting BlockStatement wrapper is removed before returning a result. - * @param phase - * the {@link CompilePhase} the AST will be targeted towards. Default is {@link CompilePhase#CLASS_GENERATION} - * @param statementsOnly - * when true, only the script statements are returned. WHen false, you will - * receive back a Script class node also. Default is true. - * @param source - * The source code String that will be compiled. The string must be a block wrapped in curly braces. - * @returns a List of {@link ASTNode} . - * @throws IllegalArgumentException - * if source is null or empty - */ - private List<ASTNode> buildFromBlock(CompilePhase phase = CompilePhase.CLASS_GENERATION, boolean statementsOnly = true, String source) { - if (!source || "" == source.trim()) throw new IllegalArgumentException("A source must be specified") - def labelledSource = "__synthesized__label__${System.currentTimeMillis()}__:" + source - List<ASTNode> result = new AstStringCompiler().compile(labelledSource, phase, statementsOnly) - // find the block statement from the result, and unwrap it from one level. - result.collect { node -> - if (node instanceof BlockStatement) { - ((BlockStatement)node).statements[0] //unwrap the artifact of pre-pending the goto label - } else { - node - } - } - } - - /** - * Builds AST based on the DSL data within the Closure parameter. - * @param specification - * the contents to create - */ - List<ASTNode> buildFromSpec(@DelegatesTo(AstSpecificationCompiler) Closure specification) { - if (specification == null) throw new IllegalArgumentException('Null: specification') - def properties = new AstSpecificationCompiler(specification) - return properties.expression - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/groovy/blob/10110145/src/main/groovy/AstHelper.groovy ---------------------------------------------------------------------- diff --git a/src/main/groovy/AstHelper.groovy b/src/main/groovy/AstHelper.groovy deleted file mode 100644 index 206b0df..0000000 --- a/src/main/groovy/AstHelper.groovy +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.codehaus.groovy.transform.tailrec - -import groovy.transform.CompileStatic -import org.codehaus.groovy.ast.ClassNode -import org.codehaus.groovy.ast.expr.Expression -import org.codehaus.groovy.ast.expr.VariableExpression -import org.codehaus.groovy.ast.stmt.ContinueStatement -import org.codehaus.groovy.ast.stmt.ExpressionStatement -import org.codehaus.groovy.ast.stmt.Statement -import org.codehaus.groovy.ast.stmt.ThrowStatement - -import java.lang.reflect.Modifier - -import static org.codehaus.groovy.ast.tools.GeneralUtils.classX -import static org.codehaus.groovy.ast.tools.GeneralUtils.declS -import static org.codehaus.groovy.ast.tools.GeneralUtils.propX -import static org.codehaus.groovy.ast.tools.GeneralUtils.varX - -/** - * Helping to create a few standard AST constructs - * - * @author Johannes Link - */ -@CompileStatic -class AstHelper { - static ExpressionStatement createVariableDefinition(String variableName, ClassNode variableType, Expression value, boolean variableShouldBeFinal = false ) { - def newVariable = varX(variableName, variableType) - if (variableShouldBeFinal) - newVariable.setModifiers(Modifier.FINAL) - (ExpressionStatement) declS(newVariable, value) - } - - static ExpressionStatement createVariableAlias(String aliasName, ClassNode variableType, String variableName ) { - createVariableDefinition(aliasName, variableType, varX(variableName, variableType)) - } - - static VariableExpression createVariableReference(Map variableSpec) { - varX((String) variableSpec.name, (ClassNode) variableSpec.type) - } - - /** - * This statement should make the code jump to surrounding while loop's start label - * Does not work from within Closures - */ - static Statement recurStatement() { - //continue _RECUR_HERE_ - new ContinueStatement(InWhileLoopWrapper.LOOP_LABEL) - } - - /** - * This statement will throw exception which will be caught and redirected to jump to surrounding while loop's start label - * Also works from within Closures but is a tiny bit slower - */ - static Statement recurByThrowStatement() { - // throw InWhileLoopWrapper.LOOP_EXCEPTION - new ThrowStatement(propX(classX(InWhileLoopWrapper), 'LOOP_EXCEPTION')) - } -}
