blob: 13fe3b5f4be2e9038d3fe62e5ea7e32138c6d3d4 [file] [log] [blame]
/*
* 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.antlr
import groovy.test.GroovyTestCase
import org.codehaus.groovy.ast.ClassNode
import org.codehaus.groovy.ast.InnerClassNode
import org.codehaus.groovy.ast.MethodNode
import org.codehaus.groovy.ast.builder.AstBuilder
import org.codehaus.groovy.ast.stmt.Statement
import static org.codehaus.groovy.control.CompilePhase.CONVERSION
/**
* Test for AntlrParserPlugin.
*/
class AntlrParserPluginTest extends GroovyTestCase {
void testInnerClassLineNumbers() {
def result = new AstBuilder().buildFromString CONVERSION, false, '''
new Object() {
}
'''
assert result[2].getClass() == InnerClassNode
assert result[2].lineNumber == 2
assert result[2].lastLineNumber == 4
assert result[2].columnNumber == 26
assert result[2].lastColumnNumber == 14
}
void testEnumLineNumbers() {
def result = new AstBuilder().buildFromString CONVERSION, false, '''
enum Color {
}
'''
assert result[1].getClass() == ClassNode
assert result[1].lineNumber == 2
assert result[1].lastLineNumber == 4
assert result[1].columnNumber == 13
assert result[1].lastColumnNumber == 14
}
void testStatementAfterLabel() {
def result = new AstBuilder().buildFromString CONVERSION, false, '''
def method() {
label:
assert i == 9
}
'''
assert result[1].getClass() == ClassNode
MethodNode method = result[1].getMethods('method')[0]
Statement statement = method.code.statements[0]
assert statement.lineNumber == 4
assert statement.lastLineNumber == 4
assert statement.columnNumber == 21
assert statement.lastColumnNumber == 34
assert statement.statementLabels[0] == 'label'
}
}