mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-03 12:45:48 +01:00
Add framework for the extern keyword. (#3755)
This doesn't add full support. I'm separating it out to make the effects of the modifier changes clearer for review. I'm restructuring a little with the expectation that we'll have some more categories of modifier keywords in the future (similar to `extern`, these may not be in a "set" such as access), and thus easily scaling up to a few more would be useful.
This commit is contained in:
@@ -101,17 +101,25 @@ static auto BuildFunctionDecl(Context& context,
|
||||
// Process modifiers.
|
||||
auto modifiers = DiagnoseModifiers(context, name_context.target_scope_id);
|
||||
if (!!(modifiers & KeywordModifierSet::Access)) {
|
||||
context.TODO(context.decl_state_stack().innermost().saw_access_modifier,
|
||||
context.TODO(context.decl_state_stack().innermost().modifier_node_id(
|
||||
ModifierOrder::Access),
|
||||
"access modifier");
|
||||
}
|
||||
if (!!(modifiers & KeywordModifierSet::Extern)) {
|
||||
context.TODO(context.decl_state_stack().innermost().modifier_node_id(
|
||||
ModifierOrder::Extern),
|
||||
"extern modifier");
|
||||
}
|
||||
if (!!(modifiers & KeywordModifierSet::Method)) {
|
||||
context.TODO(context.decl_state_stack().innermost().saw_decl_modifier,
|
||||
context.TODO(context.decl_state_stack().innermost().modifier_node_id(
|
||||
ModifierOrder::Decl),
|
||||
"method modifier");
|
||||
}
|
||||
if (!!(modifiers & KeywordModifierSet::Interface)) {
|
||||
// TODO: Once we are saving the modifiers for a function, add check that
|
||||
// the function may only be defined if it is marked `default` or `final`.
|
||||
context.TODO(context.decl_state_stack().innermost().saw_decl_modifier,
|
||||
context.TODO(context.decl_state_stack().innermost().modifier_node_id(
|
||||
ModifierOrder::Decl),
|
||||
"interface modifier");
|
||||
}
|
||||
context.decl_state_stack().Pop(DeclState::Fn);
|
||||
|
||||
Reference in New Issue
Block a user