2006-09-02 Jürg Billeter <j@bitron.ch>
+ * vala/scanner.l, vala/parser.y, vala/valasemanticanalyzer.vala,
+ vala/valacodegenerator.vala, vala/valainterfacewriter.vala,
+ vala/valamemberaccessibility.vala: prepare to support protected
+ members
+
+2006-09-02 Jürg Billeter <j@bitron.ch>
+
* vala/parser.y: don't set parent_node in parser
* vala/valasemanticanalyzer.vala: support string + operator
* vala/valaassignment.vala, vala/valabinaryexpression.vala,
%token VALA_NULL "null"
%token OUT "out"
%token OVERRIDE "override"
-%token PUBLIC "public"
%token PRIVATE "private"
+%token PROTECTED "protected"
+%token PUBLIC "public"
%token REF "ref"
%token RETURN "return"
%token SET "set"
{
$$ = VALA_MEMBER_ACCESSIBILITY_PUBLIC;
}
+ | PROTECTED
+ {
+ $$ = VALA_MEMBER_ACCESSIBILITY_PROTECTED;
+ }
| PRIVATE
{
$$ = VALA_MEMBER_ACCESSIBILITY_PRIVATE;
"null" { uploc; return VALA_NULL; }
"out" { uploc; return OUT; }
"override" { uploc; return OVERRIDE; }
-"public" { uploc; return PUBLIC; }
"private" { uploc; return PRIVATE; }
+"protected" { uploc; return PROTECTED; }
+"public" { uploc; return PUBLIC; }
"ref" { uploc; return REF; }
"set" { uploc; return SET; }
"signal" { uploc; return SIGNAL; }
var ctypedef = new CCodeTypeDefinition (cb.return_type.get_cname (), cfundecl);
- if (cb.access == MemberAccessibility.PUBLIC) {
+ if (cb.access != MemberAccessibility.PRIVATE) {
header_type_declaration.append (ctypedef);
} else {
source_type_member_declaration.append (ctypedef);
cdecl.add_declarator (new CCodeVariableDeclarator.with_initializer ("%s%s".printf (c.get_cname (), arr), (CCodeExpression) c.initializer.ccodenode));
cdecl.modifiers = CCodeModifiers.STATIC;
- if (c.access == MemberAccessibility.PUBLIC) {
+ if (c.access != MemberAccessibility.PRIVATE) {
header_type_member_declaration.append (cdecl);
} else {
source_type_member_declaration.append (cdecl);
}
public override void visit_field (Field! f) {
- if (f.access == MemberAccessibility.PUBLIC) {
+ if (f.access != MemberAccessibility.PRIVATE) {
instance_struct.add_field (f.type_reference.get_cname (), f.get_cname ());
} else if (f.access == MemberAccessibility.PRIVATE) {
if (f.instance) {
/* real function declaration and definition not needed
* for abstract methods */
if (!m.is_abstract) {
- if (m.access == MemberAccessibility.PUBLIC && !(m.is_virtual || m.overrides)) {
+ if (m.access != MemberAccessibility.PRIVATE && !(m.is_virtual || m.overrides)) {
/* public methods need function declaration in
* header file except virtual/overridden methods */
header_type_member_declaration.append (function.copy ());
}
public override void visit_begin_class (Class! cl) {
- if (cl.access != MemberAccessibility.PUBLIC) {
+ if (cl.access == MemberAccessibility.PRIVATE) {
internal_scope = true;
return;
}
}
public override void visit_end_class (Class! cl) {
- if (cl.access != MemberAccessibility.PUBLIC) {
+ if (cl.access == MemberAccessibility.PRIVATE) {
internal_scope = false;
return;
}
}
public override void visit_begin_struct (Struct! st) {
- if (st.access != MemberAccessibility.PUBLIC) {
+ if (st.access == MemberAccessibility.PRIVATE) {
internal_scope = true;
return;
}
}
public override void visit_end_struct (Struct! st) {
- if (st.access != MemberAccessibility.PUBLIC) {
+ if (st.access == MemberAccessibility.PRIVATE) {
internal_scope = false;
return;
}
}
public override void visit_begin_interface (Interface! iface) {
- if (iface.access != MemberAccessibility.PUBLIC) {
+ if (iface.access == MemberAccessibility.PRIVATE) {
internal_scope = true;
return;
}
}
public override void visit_end_interface (Interface! iface) {
- if (iface.access != MemberAccessibility.PUBLIC) {
+ if (iface.access == MemberAccessibility.PRIVATE) {
internal_scope = false;
return;
}
}
public override void visit_begin_enum (Enum! en) {
- if (en.access != MemberAccessibility.PUBLIC) {
+ if (en.access == MemberAccessibility.PRIVATE) {
internal_scope = true;
return;
}
}
public override void visit_end_enum (Enum! en) {
- if (en.access != MemberAccessibility.PUBLIC) {
+ if (en.access == MemberAccessibility.PRIVATE) {
internal_scope = false;
return;
}
}
public override void visit_field (Field! f) {
- if (internal_scope || f.access != MemberAccessibility.PUBLIC) {
+ if (internal_scope || f.access == MemberAccessibility.PRIVATE) {
return;
}
}
public override void visit_begin_callback (Callback! cb) {
- if (internal_scope || cb.access != MemberAccessibility.PUBLIC) {
+ if (internal_scope || cb.access == MemberAccessibility.PRIVATE) {
return;
}
}
public override void visit_begin_method (Method! m) {
- if (internal_scope || m.access != MemberAccessibility.PUBLIC || m.overrides) {
+ if (internal_scope || m.access == MemberAccessibility.PRIVATE || m.overrides) {
return;
}
}
public override void visit_begin_signal (Signal! sig) {
- if (internal_scope || sig.access != MemberAccessibility.PUBLIC) {
+ if (internal_scope || sig.access == MemberAccessibility.PRIVATE) {
return;
}
public enum Vala.MemberAccessibility {
PRIVATE,
INTERNAL,
+ PROTECTED,
PUBLIC
}
}
public override void visit_field (Field! f) {
- if (f.access == MemberAccessibility.PUBLIC) {
+ if (f.access != MemberAccessibility.PRIVATE) {
if (f.type_reference.data_type != null) {
/* is null if it references a type parameter */
current_source_file.add_symbol_dependency (f.type_reference.data_type.symbol, SourceFileDependencyType.HEADER_SHALLOW);
access = ((Method) member).access;
}
- if (access != MemberAccessibility.PUBLIC) {
+ if (access == MemberAccessibility.PRIVATE) {
var target_type = (DataType) member.symbol.parent_symbol.node;
var this_type = find_parent_type (current_symbol);
var m = (Method) a.right.symbol_reference.node;
- if (m.instance && m.access == MemberAccessibility.PUBLIC) {
+ if (m.instance && m.access != MemberAccessibility.PRIVATE) {
/* TODO: generate wrapper function */
ma.error = true;