view_decl

func view_decl(target: &Syntax<Decl>, declaration: &DeclContext) -> DeclView?

Build a structural view of a declaration in the context it occupies. .none reports syntax the declaration grammar rejects, which a wrapper target can only be when a previous rebuild produced it.

View Source
pub func view_decl(target: &Syntax<Decl>, declaration: &DeclContext) -> DeclView? {
	let materialized = materialize_collect(raw: target.raw, group_splices: true, collect_atoms: true)
	let outcome = parse_decl_tokens_in(source: materialized.source, input: materialized.input, context_tag: decl_context_tag(context: declaration))
	if let .some(_) = outcome.failure { return .none }
	let items = outcome.items
	for item in items {
		match item {
			.decl_item(decl) -> return .some(build_view(decl: decl, materialized: materialized)),
			_ -> return .none
		}
	}
	.none
}