Commit Graph

7 Commits

Author SHA1 Message Date
Jordan Rose
396c9f23b4 [Parse] Stop ignoring private decls for incremental purposes. (#3352)
We'd really like to say that private decls can't affect other files,
but we don't have enough information at parse-time:

- Private members of non-private classes still show up in vtables,
  which affects subclasses and callers in other files.

- Private stored properties of non-private structs change the
  layout of the struct.

- Private types may be used in private stored properties, affecting
  the layout of the containing struct.

- Private decls of /any kind/ can be used as the initial value of a
  stored property without an explicit type.

    private class Evil {
      class func defaultAlignment() -> Alignment { return .evil }
    }
    public struct Character {
      // Inferred type here!
      private var alignment = Evil.defaultAlignment()
    }

To be safe and correct, go back to only ignoring method bodies.

https://bugs.swift.org/browse/SR-1030
2016-07-06 12:32:06 -07:00
Rintaro Ishizaki
1bdce7ced6 [lit] Add substitutions: %utils and %line-directive
%utils => ${SWIFT_SOURCE_DIR}/utils
%line-directive => ${SWIFT_SOURCE_DIR}/utils/line-directive
2016-06-11 02:41:15 +09:00
Chris Willmore
8639248e15 Adding private property to struct or class should trigger downstream builds.
Swift SVN r32241
2015-09-25 21:48:10 +00:00
Chris Willmore
1a92333426 Add test for effect of new private property of class on interface hash.
Swift SVN r32240
2015-09-25 21:20:49 +00:00
Chris Willmore
538f7847f5 Only ignore private decls at global level.
<rdar://problem/22856386> Changing a private stored property (in a
struct or class) or a private method (in a class) /should/ force other
files to recompile

Swift SVN r32239
2015-09-25 21:16:54 +00:00
Chris Willmore
0e326dbeeb Exclude private decls from interface token hash.
After parsing a private decl, reset the token hash state to what it was
before the decl was parsed. This way, adding a private decl or editing
its type or name will not trigger a rebuild of downstream files.

<rdar://problem/22239821> Modifying private APIs shouldn't cause dependents to recompile

Swift SVN r31358
2015-08-20 03:43:43 +00:00
Jordan Rose
fbb8d3f9a8 Add "interface hash" for improved incremental builds.
Compute the hash of all interface tokens when parsing; write the
interface hash to the swiftdeps file, or if the -dump-interface-hash
option is passed to the frontend. This hash will be used in incremental
mode to determine whether a file's interface has changed, and therefore
whether dependent files need to be rebuilt in response to the change.

Committed on ChrisW's behalf while he gets his setup unborked.

rdar://problem/15352929

Swift SVN r30477
2015-07-22 00:13:54 +00:00