visibility restrictions. This ensures that all declarations of the same entity end up in the same redeclaration chain, even if some of those declarations aren't visible. While this may seem unfortunate to some---why can't two C modules have different functions named 'f'?---it's an acknowedgment that a module does not introduce a new "namespace" of names. As part of this, stop merging the 'module-private' bit from previous declarations to later declarations, because we want each declaration in a module to stand on its own because this can effect, for example, submodule visibility. Note that this notion of names that are invisible to normal name lookup but are available for redeclaration lookups is how we should implement friend declarations and extern declarations within local function scopes. I'm not tackling that problem now. llvm-svn: 146980
14 lines
291 B
C
14 lines
291 B
C
__module_private__ double &f0(double);
|
|
__module_private__ double &f0(double);
|
|
|
|
__module_private__ int hidden_var;
|
|
|
|
inline void test_f0_in_right() {
|
|
double &dr = f0(hidden_var);
|
|
}
|
|
|
|
struct VisibleStruct {
|
|
__module_private__ int field;
|
|
__module_private__ virtual void setField(int f);
|
|
};
|