An integrated development environment (IDE) is a programming environment that has been packaged as an application program, typically consisting of a code editor, a compiler or parser, a debugger and a graphical user interface (GUI) builder. The IDE may be a stand-alone application or it may be included as part of one or more existing and compatible applications. IDEs provide a user-friendly framework for developing many modern object oriented programming languages such as Visual Basic, C, C++, Pascal and Java.
IDEs commonly provide editing tools to assist software developers in editing/writing source code files or portions of source code for such files. Code assist or statement completion is a powerful editing tool that allows a developer to choose from a list of contextually selected candidate completion statements. A chosen candidate completion statement is then automatically written into the source code file or source code portion at the position of the editor tool cursor, for example. Such a tool reduces the errors associated with the developer manually writing the code. It also removes the need for the developer to either attempt to recall code information from memory or look it up from other sources which, in the latter case, might require the developer to flip between the editing tool window and windows containing the sought after information.
A problem with the code assist or statement completion editing tool is that it derives the contents of the candidate completion statement list from the definition of the shape of the class for which the completion is being performed. It does not, however, indicate whether any of the candidate completion statements in the list is restricted further by information not present in the class definition. For example, it does not provide any information for the case where one of said possible completion statements in the pop-up list includes a method argument having a variable that, on method invocation, can receive, as a valid passed-in value, a value belonging to a small subset of a range of values defined for that type of argument. The subset of valid passed-in values may comprise the only values that are acceptable to the application programming interface (API) of the class.