This came up with #398. Right now, an Input's requiredAt and an Output's dependsOn stage are hard-coded into a component. However, some components like Operators are generic and don't know what its requiredAt and dependsOn stages are; they should simply be "inherited" from whatever output's are hooked up to the component. Solutions:
- a "pass-through" requiredAt/dependsOn stage that says "just use my dependency's dependsOn stage".
- remove stages from inputs and outputs. Is there something that makes it necessary for inputs and outputs to have associated stages? You'll get an exception either way if the stages don't match up. @aseth1 said that by specifying these stages, the exception occurs earlier (during "construct" time instead of during simulation).
- @mitkof6 suggested another option: for these generic components, create a property that allows one to specify the stages for a component. This would be easier to do (though we don't currently have support for Stage properties), but would introduce redundant information, and thus another place for user error.