|
|
@@ -1362,11 +1362,20 @@ let init_field (ctx,cctx,fctx) f =
|
|
|
match (fst acc, f.cff_kind) with
|
|
|
| APublic, _ | APrivate, _ | AStatic, _ | AFinal, _ | AExtern, _ -> ()
|
|
|
| ADynamic, FFun _ | AOverride, FFun _ | AMacro, FFun _ | AInline, FFun _ | AInline, FVar _ -> ()
|
|
|
- | _, FVar _ -> display_error ctx ("Invalid accessor '" ^ Ast.s_placed_access acc ^ "' for variable " ^ name) p
|
|
|
- | _, FProp _ -> display_error ctx ("Invalid accessor '" ^ Ast.s_placed_access acc ^ "' for property " ^ name) p
|
|
|
+ | _, FVar _ -> display_error ctx ("Invalid accessor '" ^ Ast.s_placed_access acc ^ "' for variable " ^ name) (snd acc)
|
|
|
+ | _, FProp _ -> display_error ctx ("Invalid accessor '" ^ Ast.s_placed_access acc ^ "' for property " ^ name) (snd acc)
|
|
|
) f.cff_access;
|
|
|
begin match fctx.override with
|
|
|
- | Some _ -> (match c.cl_super with None -> error ("Invalid override on field '" ^ name ^ "': class has no super class") p | _ -> ());
|
|
|
+ | Some _ ->
|
|
|
+ (match c.cl_super with
|
|
|
+ | None ->
|
|
|
+ let p =
|
|
|
+ try List.assoc AOverride f.cff_access
|
|
|
+ with Not_found -> p
|
|
|
+ in
|
|
|
+ error ("Invalid override on field '" ^ name ^ "': class has no super class") p
|
|
|
+ | _ -> ()
|
|
|
+ );
|
|
|
| None -> ()
|
|
|
end;
|
|
|
begin match cctx.abstract with
|