Repository navigation
Conversation
Daikon treats arbitrarily named program points such as :::POINT (used by convertcsv.pl) as leaves of the dataflow hierarchy, but the splitter hierarchy code treated only numbered exit points as leaves. As a result, splitting at such a program point produced no samples and no implications. Add PptTopLevel.is_dataflow_leaf() and use it consistently.
FileIO.process_sample and MergeInvariants now use is_dataflow_leaf() rather than their own leaf tests. is_dataflow_leaf() follows the declared ppt type when there is one, treats :::GLOBAL as a non-leaf, and is the basis of the final assertion in init_hierarchy_new. The new SplitPoint test splits a :::POINT program point.
… SplitPoint test * FileIO reads a "ppt-type exit" declaration of a numbered exit (such as foo:::EXIT22) as SUBEXIT, so is_subexit, is_combined_exit, and is_dataflow_leaf agree about it. is_dataflow_leaf no longer special-cases it. * process_sample again rejects samples at any combined-exit name. * init_hierarchy (old decls) also creates equality views for childless non-leaves such as :::GLOBAL; the assertion there excludes combined exits. * MergeInvariants builds the hierarchy from a decls file the same way Daikon does. * SplitPoint test data now yields implications relating x and y.
…e hierarchy dispatch Normalize a numbered exit typed EXIT or POINT to SUBEXIT, and a non-combined-exit name typed EXIT to POINT, in the PptTopLevel constructor and readObject, so that deserialized ppts also get consistent predicates. Remove MergeInvariants's assertion that non-leaves have children, allow childless combined exits, and drop splitters of childless non-leaves. Add PptRelation.init_hierarchy_for_decl_format.
…e normalization, merge-link cleanup, AnnotateNullable, shared helpers - MergeInvariants: set up equality views on childless non-leaves when the merge template comes from .inv files; remove only MERGE_CHILD relations in the final cleanup. - PptTopLevel.normalize_type: require EXIT followed by digits for SUBEXIT; a POINT- or EXIT-typed foo:::EXIT is a combined exit. - Daikon.create_combined_exits: do not replace a declared combined exit. - AnnotateNullable: accept a numbered exit with no combined-exit parent as a method's exit. - Share conditional-connection and hierarchy-finishing code between init_hierarchy and init_hierarchy_new; share equality-view creation.
… combined exits * PptTopLevel.normalize_type also derives ENTER, OBJECT, and CLASS from the name, and applies to ppts with no declared type, so the is_* predicates no longer need name-based fallbacks. PptConditional takes its parent's type. * Move the numbered-exit name test to PptName.isExitWithLineNumber. * AnnotateNullable processes a method once even when an .inv file lacks its combined exit, combining the annotations of all its numbered exits. * Reword the FileIO comment about samples at combined exit points. * init_hierarchy_new again includes conditional relations in its debug output.
# Conflicts: # tests/daikon-tests/Makefile
PptTopLevel.normalize_type derives the type from the name when the declaration gives no type, or gives the type exit or point, so the is_enter, is_exit, is_combined_exit, is_subexit, is_object, and is_class predicates no longer need name-based fallbacks. A numbered exit declared with type exit is a subexit. * Daikon.create_combined_exits does not replace a declared combined exit. * AnnotateNullable handles an .inv file that lacks a combined exit. * PptConditional takes its parent's type. Split from #858.
PptRelation.init_hierarchy (old declaration format) and init_hierarchy_new now share connect_conditionals and finish_hierarchy, so the old format also creates equality views for childless non-leaves. A non-leaf with no children has its splitters removed. New methods PptRelation.init_hierarchy_for_decl_format and PptTopLevel.create_equality_view replace duplicated code. Split from #858.
…ow-leaf # Conflicts: # java/daikon/PptRelation.java # java/daikon/PptTopLevel.java
|
Warning Review limit reached
This review includes 16 billable files and costs up to $4.00. Or wait 1 minute for your next included review. View limit detailsLimit details: You’ve used all 2 included reviews currently available. Review configuration: ⚙️ Run configuration
⛔ Files ignored due to path filters (1)
📒 Files selected for processing (16)
Comment |
* AnnotateNullable no longer handles .inv files that lack combined exits; it processes only combined exits and skips all other children. * PptTopLevel.readObject does not re-derive the type, which was wrong for a PptConditional. * MergeInvariants cleans the merge template on the decls path too, so leaves that get merge children have no equality view. * PptRelation.setup_childless_nonleaves skips leaves instead of asserting that there are none. * Suppress a purity warning in PptName.isExitWithLineNumber.
mernst
removed this pull request from stack #874
October 6, 2026 15:46
This was referenced Oct 6, 2026
Member
Author
|
Replaced by #877, whose branch is in the mernst fork like the other PRs. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is one of three PRs split from #858, which it replaces. Merge #871 and #875 first; this PR includes their changes.
PptRelationassumed that numbered exits are the only leaves of the dataflow hierarchy. At any other leaf with splitters (such as a:::POINTprogram point, as produced byconvertcsv.pl), the samples went only to the conditional program points, so the program point had no samples and no implications.The new
PptTopLevel.is_dataflow_leaf()is the single definition of a leaf: the numbered exits and the general program points, except:::THROWSand:::GLOBAL.PptRelation,FileIO.process_sample,Daikon.setupEquality, andMergeInvariantsall use it.Other changes:
:::GLOBALis no longer a leaf, so when it has no children it gets its equality view fromsetup_childless_nonleaves.MergeInvariantsbuilds the hierarchy from a decls file the same way Daikon does, and at the end removes only the merge relations it added.The new
SplitPointtest splits a:::POINTprogram point.runcluster.pl(#856) depends on this change; its tests are intests/script-tests/runcluster/.