コード例 #1
0
ファイル: funcs.go プロジェクト: gsrpc/gslang
// Annotations .
func Annotations(node ast.Node) (anns []*ast.Annotation) {

	val, ok := node.GetExtra(ExtraAnnotation)

	if ok {
		anns = val.([]*ast.Annotation)
	}

	return
}
コード例 #2
0
ファイル: funcs.go プロジェクト: gsrpc/gslang
// Pos .
func Pos(node ast.Node) (start lexer.Position, end lexer.Position) {
	val, ok := node.GetExtra(ExtraStartPos)

	if ok {
		start = val.(lexer.Position)
	}

	val, ok = node.GetExtra(ExtraEndPos)

	if ok {
		end = val.(lexer.Position)
	}

	return
}
コード例 #3
0
ファイル: funcs.go プロジェクト: gsrpc/gslang
// FindAnnotations .
func FindAnnotations(node ast.Node, name string) (retval []*ast.Annotation) {

	val, ok := node.GetExtra(ExtraAnnotation)

	if ok {
		anns := val.([]*ast.Annotation)

		for _, ann := range anns {

			if ann.Type.Ref == nil {
				continue
			}

			if ann.Type.Ref.FullName() == name {
				retval = append(retval, ann)
			}
		}
	}

	return
}
コード例 #4
0
ファイル: funcs.go プロジェクト: gsrpc/gslang
// FindAnnotation .
func FindAnnotation(node ast.Node, name string) (*ast.Annotation, bool) {

	val, ok := node.GetExtra(ExtraAnnotation)

	if ok {
		anns := val.([]*ast.Annotation)

		for _, ann := range anns {

			if ann.Type.Ref == nil {
				continue
			}

			if ann.Type.Ref.FullName() == name {
				return ann, true
			}
		}
	}

	return nil, false
}