diff --git a/com.ibm.wala.cast.java.polyglot/.classpath b/com.ibm.wala.cast.java.polyglot/.classpath
index cf6f27562..d154f35ab 100644
--- a/com.ibm.wala.cast.java.polyglot/.classpath
+++ b/com.ibm.wala.cast.java.polyglot/.classpath
@@ -1,9 +1,7 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/com.ibm.wala.cast.java.polyglot/.settings/org.eclipse.jdt.core.prefs b/com.ibm.wala.cast.java.polyglot/.settings/org.eclipse.jdt.core.prefs
index 3e6680a6f..bdc44d798 100644
--- a/com.ibm.wala.cast.java.polyglot/.settings/org.eclipse.jdt.core.prefs
+++ b/com.ibm.wala.cast.java.polyglot/.settings/org.eclipse.jdt.core.prefs
@@ -1,275 +1,263 @@
-#Thu Feb 03 10:12:26 EST 2011
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.format_block_comments=true
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
-org.eclipse.jdt.core.formatter.comment.format_line_comments=true
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
-org.eclipse.jdt.core.formatter.indentation.size=2
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=132
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-org.eclipse.jdt.core.formatter.tabulation.char=space
-org.eclipse.jdt.core.formatter.tabulation.size=2
-org.eclipse.jdt.core.formatter.use_on_off_tags=false
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+#Mon Apr 13 15:38:50 EDT 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=132
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=132
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=space
+org.eclipse.jdt.core.formatter.tabulation.size=2
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
diff --git a/com.ibm.wala.cast.java.polyglot/META-INF/MANIFEST.MF b/com.ibm.wala.cast.java.polyglot/META-INF/MANIFEST.MF
index 161522ccd..ccfe12074 100644
--- a/com.ibm.wala.cast.java.polyglot/META-INF/MANIFEST.MF
+++ b/com.ibm.wala.cast.java.polyglot/META-INF/MANIFEST.MF
@@ -5,14 +5,15 @@ Bundle-SymbolicName: com.ibm.wala.cast.java.polyglot
Bundle-Version: 1.0.0
Bundle-Activator: com.ibm.wala.cast.java.polyglot.Activator
Bundle-Vendor: IBM
-Require-Bundle: com.ibm.wala.cast.java;bundle-version="1.0.0",
- com.ibm.wala.cast;bundle-version="1.0.0",
- com.ibm.wala.core;bundle-version="1.1.3",
+Require-Bundle: com.ibm.wala.cast.java,
+ com.ibm.wala.cast,
+ com.ibm.wala.core,
org.eclipse.core.runtime,
- com.ibm.wala.shrike;bundle-version="1.1.3",
- com.ibm.wala.ide;bundle-version="1.1.3",
- org.eclipse.jdt.core;bundle-version="3.4.2",
- org.eclipse.core.resources;bundle-version="3.4.1"
+ polyglot3,
+ com.ibm.wala.shrike,
+ org.eclipse.jdt.core,
+ org.eclipse.core.resources,
+ com.ibm.wala.ide
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
Export-Package: com.ibm.wala.cast.java.client.polyglot,
@@ -32,56 +33,4 @@ Export-Package: com.ibm.wala.cast.java.client.polyglot,
polyglot.frontend.goals,
com.ibm.wala.cast.tree.impl,
com.ibm.wala.cast.java.translator,
- polyglot.frontend,
- com.ibm.wala.cast.java.types",
- java_cup;uses:="java_cup.runtime",
- java_cup.runtime,
- polyglot.ast;
- uses:="polyglot.visit,
- polyglot.types,
- polyglot.util,
- polyglot.frontend",
- polyglot.ext.param;uses:="polyglot.frontend",
- polyglot.ext.param.types;uses:="polyglot.util,polyglot.types,polyglot.frontend",
- polyglot.frontend,
- polyglot.frontend.goals;
- uses:="polyglot.visit,
- polyglot.types,
- polyglot.ast,
- polyglot.frontend",
- polyglot.frontend.passes;
- uses:="polyglot.visit,
- polyglot.types,
- polyglot.frontend.goals,
- polyglot.frontend",
- polyglot.lex;uses:="polyglot.util,java_cup.runtime",
- polyglot.main;uses:="polyglot.util,polyglot.frontend",
- polyglot.parse;
- uses:="polyglot.util,
- polyglot.types,
- polyglot.ast,
- java_cup.runtime,
- polyglot.lex,
- polyglot.frontend",
- polyglot.qq;
- uses:="polyglot.util,
- polyglot.types,
- polyglot.ast,
- polyglot.parse,
- java_cup.runtime,
- polyglot.lex,
- polyglot.frontend",
- polyglot.types;
- uses:="polyglot.util,
- polyglot.main,
- polyglot.types.reflect,
- polyglot.frontend",
- polyglot.types.reflect;uses:="polyglot.util,polyglot.types,polyglot.frontend",
- polyglot.util;uses:="polyglot.types",
- polyglot.util.typedump;uses:="polyglot.util,polyglot.types",
- polyglot.visit;
- uses:="polyglot.util,
- polyglot.types,
- polyglot.main,
- polyglot.ast,
- polyglot.frontend"
+ com.ibm.wala.cast.java.types"
diff --git a/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/client/polyglot/EclipseProjectSourceAnalysisEngine.java b/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/client/polyglot/EclipseProjectSourceAnalysisEngine.java
index f40398eed..309092ac0 100644
--- a/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/client/polyglot/EclipseProjectSourceAnalysisEngine.java
+++ b/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/client/polyglot/EclipseProjectSourceAnalysisEngine.java
@@ -37,6 +37,7 @@ import com.ibm.wala.ipa.callgraph.impl.Util;
import com.ibm.wala.ipa.cha.ClassHierarchy;
import com.ibm.wala.ipa.cha.ClassHierarchyException;
import com.ibm.wala.ipa.cha.IClassHierarchy;
+import com.ibm.wala.ssa.ConstantValue;
import com.ibm.wala.ssa.SSAOptions;
import com.ibm.wala.ssa.SymbolTable;
import com.ibm.wala.types.ClassLoaderReference;
diff --git a/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/AscriptionGoal.java b/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/AscriptionGoal.java
index 23d71ceeb..d49ba8a84 100644
--- a/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/AscriptionGoal.java
+++ b/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/AscriptionGoal.java
@@ -12,16 +12,11 @@ package com.ibm.wala.cast.java.translator.polyglot;
import polyglot.ast.ArrayInit;
import polyglot.ast.Expr;
-import polyglot.frontend.CyclicDependencyException;
-import polyglot.frontend.ExtensionInfo;
import polyglot.frontend.Job;
-import polyglot.frontend.Pass;
import polyglot.frontend.Scheduler;
-import polyglot.frontend.VisitorPass;
-import polyglot.frontend.goals.AbstractGoal;
+import polyglot.frontend.VisitorGoal;
import polyglot.types.SemanticException;
import polyglot.types.Type;
-import polyglot.util.ErrorInfo;
import polyglot.visit.AscriptionVisitor;
/**
diff --git a/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/IRGoal.java b/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/IRGoal.java
index bb4603958..265a902ca 100644
--- a/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/IRGoal.java
+++ b/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/IRGoal.java
@@ -8,24 +8,18 @@
* Contributors:
* IBM Corporation - initial API and implementation
*****************************************************************************/
-/*
- * Created on Oct 6, 2005
- */
package com.ibm.wala.cast.java.translator.polyglot;
-import polyglot.frontend.CyclicDependencyException;
+import polyglot.frontend.ExtensionInfo;
import polyglot.frontend.Job;
-import polyglot.frontend.Pass;
import polyglot.frontend.Scheduler;
-import polyglot.frontend.goals.AbstractGoal;
-import polyglot.frontend.goals.EndGoal;
-import polyglot.util.ErrorInfo;
+import polyglot.frontend.SourceGoal_c;
import com.ibm.wala.cast.java.loader.JavaSourceLoaderImpl;
import com.ibm.wala.cast.java.translator.Java2IRTranslator;
/**
- * A kind of EndGoal that indicates that DOMO IR has been generated for the given compilation unit.
+ * A kind of EndGoal that indicates that WALA IR has been generated for the given compilation unit.
*
* @author rfuhrer
*/
diff --git a/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/JavaIRTranslatorExtension.java b/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/JavaIRTranslatorExtension.java
index b4b6e4cd2..3ade654f0 100644
--- a/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/JavaIRTranslatorExtension.java
+++ b/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/JavaIRTranslatorExtension.java
@@ -13,9 +13,13 @@
*/
package com.ibm.wala.cast.java.translator.polyglot;
+import java.util.List;
+
+import polyglot.frontend.Goal;
import polyglot.frontend.JLExtensionInfo;
+import polyglot.frontend.JLScheduler;
import polyglot.frontend.Job;
-import polyglot.frontend.goals.Goal;
+import polyglot.frontend.Scheduler;
import com.ibm.wala.cast.tree.impl.CAstRewriterFactory;
diff --git a/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/ModuleSource.java b/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/ModuleSource.java
new file mode 100644
index 000000000..993d1f262
--- /dev/null
+++ b/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/ModuleSource.java
@@ -0,0 +1,60 @@
+/******************************************************************************
+ * Copyright (c) 2002 - 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *****************************************************************************/
+/*
+ * Created on Oct 6, 2005
+ */
+package com.ibm.wala.cast.java.translator.polyglot;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+
+import com.ibm.wala.classLoader.SourceModule;
+
+import polyglot.frontend.FileSource;
+import polyglot.frontend.Resource;
+
+/**
+ * A Polyglot Source whose input comes from an InputStream.
+ * Currently extends FileSource since that's all that the Polyglot Compiler class
+ * will accept.
+ * @author rfuhrer
+ */
+public class ModuleSource extends FileSource {
+ private final SourceModule module;
+
+ SourceModule getModule() {
+ return module;
+ }
+
+ public ModuleSource(final SourceModule module) throws IOException {
+ super(new Resource() {
+ public File file() {
+ return new File(module.getURL().getFile());
+ }
+
+ public InputStream getInputStream() throws IOException {
+ return module.getInputStream();
+ }
+
+ public String name() {
+ String fullPath = module.getURL().getFile();
+ int idx= fullPath.lastIndexOf(File.separatorChar);
+ return (idx > 0) ? fullPath.substring(idx+1) : fullPath;
+ }
+ @Override
+ public String toString() {
+ return module.getName();
+ }
+ }, true);
+ this.module = module;
+ }
+}
diff --git a/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/PolyglotIdentityMapper.java b/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/PolyglotIdentityMapper.java
index 893d24b56..bae3b46db 100644
--- a/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/PolyglotIdentityMapper.java
+++ b/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/PolyglotIdentityMapper.java
@@ -14,7 +14,7 @@ import polyglot.types.CodeInstance;
import polyglot.types.ConstructorInstance;
import polyglot.types.FieldInstance;
import polyglot.types.InitializerInstance;
-import polyglot.types.MemberInstance;
+import polyglot.types.MemberDef;
import polyglot.types.MethodInstance;
import polyglot.types.PrimitiveType;
import polyglot.types.ProcedureInstance;
diff --git a/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/PolyglotJava2CAstTranslator.java b/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/PolyglotJava2CAstTranslator.java
index fd44bb8a7..9851f3a68 100644
--- a/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/PolyglotJava2CAstTranslator.java
+++ b/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/PolyglotJava2CAstTranslator.java
@@ -62,6 +62,7 @@ import polyglot.ast.FieldDecl;
import polyglot.ast.FloatLit;
import polyglot.ast.For;
import polyglot.ast.Formal;
+import polyglot.ast.Id;
import polyglot.ast.If;
import polyglot.ast.Import;
import polyglot.ast.Initializer;
@@ -99,18 +100,20 @@ import polyglot.types.ArrayType;
import polyglot.types.ClassType;
import polyglot.types.CodeInstance;
import polyglot.types.ConstructorInstance;
+import polyglot.types.Context;
import polyglot.types.FieldInstance;
import polyglot.types.Flags;
+import polyglot.types.InitializerDef;
import polyglot.types.InitializerInstance;
-import polyglot.types.InitializerInstance_c;
-import polyglot.types.MemberInstance;
+import polyglot.types.MemberDef;
import polyglot.types.MethodInstance;
-import polyglot.types.ParsedClassType;
+import polyglot.types.ObjectType;
import polyglot.types.ProcedureInstance;
-import polyglot.types.ReferenceType;
import polyglot.types.SemanticException;
+import polyglot.types.StructType;
import polyglot.types.Type;
import polyglot.types.TypeSystem;
+import polyglot.types.Types;
import polyglot.util.Position;
import com.ibm.wala.cast.ir.translator.AstTranslator.InternalCAstSymbol;
@@ -290,8 +293,8 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
// and glue that code into the right place relative to the
// constructor method body ("wherever that may turn out to be").
List/* */inits = mc.getInitializers();
-
Block body = cd.body();
+
if (hasSuperCall(body)) {
// Split at call to super:
// super();
@@ -314,21 +317,28 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
return walkNodes(body, mc);
} else {
// add explicit call to default super()
- // TODO following superClass lookup of default ctor won't work if we
- // process Object in source...
- ClassType superClass = (ClassType) cd.constructorInstance().container().superType();
- ProcedureInstance defaultSuperCtor = findDefaultCtor(superClass);
- CAstNode[] bodyNodes = new CAstNode[inits.size() + body.statements().size() + 1];
- CallSiteReference callSiteRef = CallSiteReference.make(0, fIdentityMapper.getMethodRef(defaultSuperCtor),
- IInvokeInstruction.Dispatch.SPECIAL);
+ // RMF 4/17/2009- The following search for a superClass default ctor
+ // won't work if we process Object in source. In particular, the
+ // superClass might be null. In that case, simply omit the explicit
+ // super() call.
+ ClassType superClass = (ClassType) ((ObjectType) cd.constructorDef().asInstance().container()).superClass();
+ CAstNode[] bodyNodes;
+ int idx= 0;
+ int bodyInitsSize= inits.size() + body.statements().size();
+ if (superClass != null) {
+ ProcedureInstance defaultSuperCtor = findDefaultCtor(superClass);
+ CallSiteReference callSiteRef = CallSiteReference.make(0, fIdentityMapper.getMethodRef(defaultSuperCtor),
+ IInvokeInstruction.Dispatch.SPECIAL);
+ CAstNode superCall = makeNode(mc, fFactory, cd, CAstNode.CALL,
+ makeNode(mc, fFactory, cd, CAstNode.SUPER),
+ fFactory.makeConstant(callSiteRef));
+ bodyNodes = new CAstNode[bodyInitsSize + 1];
+ bodyNodes[idx++] = superCall;
+ } else { // no super class, so no super call
+ bodyNodes = new CAstNode[bodyInitsSize];
+ }
+ idx= insertInitializers(mc, bodyNodes, false, idx);
- CAstNode superCall = makeNode(mc, fFactory, cd, CAstNode.CALL, makeNode(mc, fFactory, cd, CAstNode.SUPER), fFactory
- .makeConstant(callSiteRef));
-
- bodyNodes[0] = superCall;
- insertInitializers(mc, bodyNodes, false, 1);
-
- int idx = inits.size() + 1;
for (Iterator iter = body.statements().iterator(); iter.hasNext(); idx++) {
Stmt s = (Stmt) iter.next();
bodyNodes[idx] = walkNodes(s, mc);
@@ -352,13 +362,13 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
// Generate CAST node for the initializer (init())
// Type targetType = f.memberInstance().container();
// Type fieldType = f.type().type();
- FieldReference fieldRef = fIdentityMapper.getFieldRef(f.fieldInstance());
+ FieldReference fieldRef = fIdentityMapper.getFieldRef(f.fieldDef().asInstance());
// We use null to indicate an OBJECT_REF to a static field, as the
// FieldReference doesn't
// hold enough info to determine this. In this case, (unlike field ref)
// we don't have a
// target expr to evaluate.
- CAstNode thisNode = f.flags().isStatic() ? makeNode(ctorContext, fFactory, null, CAstNode.VOID) : makeNode(ctorContext,
+ CAstNode thisNode = f.flags().flags().isStatic() ? makeNode(ctorContext, fFactory, null, CAstNode.VOID) : makeNode(ctorContext,
fFactory, f, CAstNode.THIS);
CAstNode lhsNode = makeNode(ctorContext, fFactory, f, CAstNode.OBJECT_REF, thisNode, fFactory.makeConstant(fieldRef));
@@ -488,6 +498,13 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
}
}
+ private CAstNode processAssign(Assign a, WalkContext wc) {
+ Expr lhs= a.left(fNodeFactory).type(a.type()); // PORT1.7 An Assign no longer has a lhs Expr per se; but you can ask it to materialize one...
+ WalkContext lvc = new AssignmentContext(wc);
+
+ return processAssign(a, walkNodes(lhs, lvc), a.operator(), a.right(), wc);
+ }
+
protected CAstOperator mapAssignOperator(Assign.Operator op) {
if (op == Assign.ADD_ASSIGN)
return CAstOperator.OP_ADD;
@@ -574,7 +591,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
private void handleThrowsFromCall(ProcedureInstance procedureInstance, Node callAstNode, WalkContext wc) {
List throwTypes = procedureInstance.throwTypes();
for (Iterator iter = IteratorPlusOne.make(throwTypes.iterator(), fREType); iter.hasNext();) {
- Type thrownType = (Type) iter.next();
+ Type thrownType = iter.next();
Collection/* > */catchTargets = wc.getCatchTargets(thrownType);
for (Iterator targetIter = catchTargets.iterator(); targetIter.hasNext();) {
@@ -588,7 +605,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
public CAstNode visit(Call c, WalkContext wc) {
MethodInstance methodInstance = c.methodInstance();
boolean isStatic = methodInstance.flags().isStatic();
- ReferenceType methodOwner = methodInstance.container();
+ StructType methodOwner = methodInstance.container();
if (methodOwner.isArray()) {
List realOne = methodInstance.overrides();
@@ -879,17 +896,28 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
public CAstNode visit(ArrayAccess aa, WalkContext wc) {
TypeReference eltTypeRef = fIdentityMapper.getTypeRef(aa.type());
+ hookUpNPETargets(aa, wc);
+
+ CAstNode n = makeNode(wc, fFactory, aa, CAstNode.ARRAY_REF, walkNodes(aa.array(), wc), fFactory.makeConstant(eltTypeRef),
+ walkNodes(aa.index(), wc));
+
+ wc.cfg().map(aa, n);
+
+ return n;
+ }
+
+ protected void hookUpNPETargets(Node n, WalkContext wc) {
Collection excTargets = wc.getCatchTargets(fNPEType);
if (!excTargets.isEmpty()) {
// connect NPE exception edge to relevant catch targets
// (presumably only one)
for (Iterator iterator = excTargets.iterator(); iterator.hasNext();) {
Pair catchPair = (Pair) iterator.next();
- wc.cfg().add(aa, catchPair.snd, fNPEType);
+ wc.cfg().add(n, catchPair.snd, fNPEType);
}
} else {
// connect exception edge to exit
- wc.cfg().add(aa, CAstControlFlowMap.EXCEPTION_TO_EXIT, fNPEType);
+ wc.cfg().add(n, CAstControlFlowMap.EXCEPTION_TO_EXIT, fNPEType);
}
CAstNode n = makeNode(wc, fFactory, aa, CAstNode.ARRAY_REF, walkNodes(aa.array(), wc), fFactory.makeConstant(eltTypeRef),
@@ -903,16 +931,15 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
public CAstNode visit(Field f, WalkContext wc) {
Receiver target = f.target();
Type targetType = target.type();
- // Type fieldType = f.type();
if (targetType.isArray()) {
assert f.name().equals("length");
return makeNode(wc, fFactory, f, CAstNode.ARRAY_LENGTH, walkNodes(target, wc));
}
- FieldReference fieldRef = fIdentityMapper.getFieldRef(f.fieldInstance());
- CAstNode targetNode = walkNodes(target, wc);
FieldInstance fi = f.fieldInstance();
+ FieldReference fieldRef = fIdentityMapper.getFieldRef(fi);
+ CAstNode targetNode = walkNodes(target, wc);
if (fi.flags().isStatic()) {
// JLS says: evaluate the target of the field ref and throw it away.
@@ -961,7 +988,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
}
public CAstNode visit(Local l, WalkContext wc) {
- return makeNode(wc, fFactory, l, CAstNode.VAR, fFactory.makeConstant(l.name()));
+ return makeNode(wc, fFactory, l, CAstNode.VAR, fFactory.makeConstant(l.name().id().toString()));
}
public CAstNode visit(ClassBody cb, WalkContext wc) {
@@ -986,10 +1013,12 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
public CAstNode visit(Branch b, WalkContext wc) {
Node target = null;
+ Id labelNode = b.labelNode();
+ String labelStr = labelNode != null ? labelNode.id().toString() : null;
if (b.kind() == Branch.BREAK) {
- target = wc.getBreakFor(b.label());
+ target = wc.getBreakFor(labelStr);
} else {
- target = wc.getContinueFor(b.label());
+ target = wc.getContinueFor(labelStr);
}
assert target != null;
@@ -1028,7 +1057,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
Block body = c.body();
Formal f = c.formal();
- CAstNode excDecl = makeNode(wc, fFactory, c, CAstNode.CATCH, fFactory.makeConstant(f.name()), walkNodes(body, wc));
+ CAstNode excDecl = makeNode(wc, fFactory, c, CAstNode.CATCH, fFactory.makeConstant(f.name().id().toString()), walkNodes(body, wc));
CAstNode localScope = makeNode(wc, fFactory, c, CAstNode.LOCAL_SCOPE, excDecl);
wc.cfg().map(c, excDecl);
@@ -1049,7 +1078,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
stmt = (Node) ((Block) stmt).statements().iterator().next();
}
- wc.getLabelMap().put(stmt, l.label());
+ wc.getLabelMap().put(stmt, l.labelNode().id().toString());
CAstNode result;
if (!(l.statement() instanceof Empty)) {
@@ -1069,7 +1098,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
}
public CAstNode visit(LocalClassDecl lcd, WalkContext wc) {
- fIdentityMapper.mapLocalAnonTypeToMethod(lcd.decl().type(), wc.getEnclosingMethod());
+ fIdentityMapper.mapLocalAnonTypeToMethod(lcd.decl().classDef().asType(), wc.getEnclosingMethod());
CAstEntity classEntity = walkEntity(lcd.decl(), wc);
@@ -1080,12 +1109,14 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
}
protected Node makeBreakTarget(Node loop) {
- return fNodeFactory.Labeled(Position.COMPILER_GENERATED, "breakLabel" + loop.position().toString().replace('.', '_'),
- fNodeFactory.Empty(Position.COMPILER_GENERATED));
+ return fNodeFactory.Labeled(Position.COMPILER_GENERATED,
+ fNodeFactory.Id(Position.COMPILER_GENERATED, "breakLabel" + loop.position().toString().replace('.', '_')),
+ fNodeFactory.Empty(Position.COMPILER_GENERATED));
}
protected Node makeContinueTarget(Node loop) {
- return fNodeFactory.Labeled(Position.COMPILER_GENERATED, "continueLabel" + loop.position().toString().replace('.', '_'),
+ return fNodeFactory.Labeled(Position.COMPILER_GENERATED,
+ fNodeFactory.Id(Position.COMPILER_GENERATED, "continueLabel" + loop.position().toString().replace('.', '_')),
fNodeFactory.Empty(Position.COMPILER_GENERATED));
}
@@ -1242,7 +1273,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
// try/catch/[finally]
} else {
- TryCatchContext tc = new TryCatchContext(wc, t);
+ TryCatchContext tc = new TryCatchContext(wc, t, fTypeSystem.emptyContext());
CAstNode tryNode = walkNodes(tryBlock, tc);
for (Iterator iter = catchBlocks.iterator(); iter.hasNext();) {
@@ -1294,9 +1325,9 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
else
defaultValue = CAstSymbol.NULL_DEFAULT_VALUE;
- boolean isFinal = ld.flags().isFinal();
+ boolean isFinal = ld.flags().flags().isFinal();
- return makeNode(wc, fFactory, ld, CAstNode.DECL_STMT, fFactory.makeConstant(new CAstSymbolImpl(ld.name(), isFinal,
+ return makeNode(wc, fFactory, ld, CAstNode.DECL_STMT, fFactory.makeConstant(new CAstSymbolImpl(ld.name().id().toString(), isFinal,
defaultValue)), initNode);
}
@@ -1333,7 +1364,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
}
public CAstNode visit(Formal f, WalkContext wc) {
- return makeNode(wc, fFactory, f, CAstNode.VAR, fFactory.makeConstant(f.name()));
+ return makeNode(wc, fFactory, f, CAstNode.VAR, fFactory.makeConstant(f.name().id().toString()));
}
}
@@ -1343,7 +1374,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
private final Collection fTopLevelDecls;
public CompilationUnitEntity(SourceFile file, List topLevelDecls) {
- fName = (file.package_() == null) ? "" : file.package_().package_().fullName().replace('.', '/');
+ fName = (file.package_() == null) ? "" : file.package_().package_().get().fullName().toString().replace('.', '/');
fTopLevelDecls = topLevelDecls;
}
@@ -1415,12 +1446,12 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
}
}
- public final class PolyglotJavaType implements JavaType {
- private final CAstTypeDictionary fDict;
+ public class PolyglotJavaType implements JavaType {
+ protected final CAstTypeDictionary fDict;
- private final TypeSystem fSystem;
+ protected final TypeSystem fSystem;
- private final ClassType fType;
+ protected final ClassType fType;
private Collection fSuperTypes = null;
@@ -1432,8 +1463,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
}
public String getName() {
- // TODO Will the IdentityMapper do the right thing for anonymous
- // classes?
+ // TODO Will the IdentityMapper do the right thing for anonymous classes?
// If so, we can delete most of the following logic...
if (fType.isLocal() || fType.isAnonymous()) {
return fIdentityMapper.anonLocalTypeToTypeID(fType);
@@ -1441,7 +1471,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
return fIdentityMapper.getTypeRef(fType).getName().toString();
}
- public Collection getSupertypes() {
+ public Collection getSupertypes() {
if (fSuperTypes == null) {
buildSuperTypes();
}
@@ -1452,20 +1482,27 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
// TODO this is a source entity, but it might actually be the root type
// (Object), so assume # intfs + 1
Type superType;
- try {
- superType = (fType.superType() == null) ? fSystem.typeForName("java.lang.Object") : fType.superType();
- } catch (SemanticException e) {
- Assertions.UNREACHABLE("Can't find java.lang.Object???");
- return;
+ if (fType.superClass() == null && fType != fSystem.Object()) {
+ superType = fSystem.Object(); // fSystem.Object() MUST be the root of the class hierarchy
+ } else {
+ superType = fType.superClass();
}
int N = fType.interfaces().size() + 1;
fSuperTypes = new ArrayList(N);
- // Following assumes that noone can call getSupertypes() before we have
+ // Following assumes that no one can call getSupertypes() before we have
// created CAstType's for every type in the program being analyzed.
- fSuperTypes.add(fDict.getCAstTypeFor(superType));
- for (Iterator iter = fType.interfaces().iterator(); iter.hasNext();) {
+ if (superType != null) {
+ fSuperTypes.add(fDict.getCAstTypeFor(superType));
+ }
+ for (Iterator iter = fType.interfaces().iterator(); iter.hasNext(); ) {
Type t = (Type) iter.next();
+ if (t instanceof ClassType) {
+ ClassType classType = (ClassType) t;
+ if (classType == fSystem.Object()) {
+ continue; // Skip fSystem.Object() as a super-interface; it really MUST be a class as far as WALA is concerned
+ }
+ }
fSuperTypes.add(fDict.getCAstTypeFor(t));
}
}
@@ -1475,6 +1512,9 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
}
public boolean isInterface() {
+ if (fType == fSystem.Object()) {
+ return false; // fSystem.Object() MUST be a class, as far as WALA is concerned
+ }
return fType.flags().isInterface();
}
}
@@ -1484,8 +1524,8 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
public CodeBodyEntity(Map entities) {
fEntities = new LinkedHashMap>();
- for (Iterator keys = entities.keySet().iterator(); keys.hasNext();) {
- CAstNode key = (CAstNode) keys.next();
+ for (Iterator keys = entities.keySet().iterator(); keys.hasNext();) {
+ CAstNode key = keys.next();
fEntities.put(key, Collections.singleton(entities.get(key)));
}
}
@@ -1520,7 +1560,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
private final CAstSourcePositionMap.Position sourcePosition;
private ClassEntity(ClassContext context, List entities, ClassDecl cd, Position p) {
- this(context, entities, cd.type(), cd.name(), p);
+ this(context, entities, cd.classDef().asType(), cd.name().id().toString(), p);
}
private ClassEntity(ClassContext context, List entities, ClassType ct, String name, Position p) {
@@ -1597,12 +1637,20 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
}
public Collection getQualifiers() {
+ if (fCT == fTypeSystem.Object()) { // pretend the root of the hierarchy is always a class
+ return mapFlagsToQualifiers(fCT.flags().clear(Flags.INTERFACE));
+ }
return mapFlagsToQualifiers(fCT.flags());
}
public CAstType getType() {
return new PolyglotJavaType(fCT, getTypeDict(), fTypeSystem);
}
+
+ @Override
+ public String toString() {
+ return fCT.fullName().toString();
+ }
}
protected final class ProcedureEntity extends CodeBodyEntity implements JavaProcedureEntity {
@@ -1618,7 +1666,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
private final String[] argumentNames;
- private ProcedureEntity(CAstNode pdast, TypeSystem system, CodeInstance pd, Type declaringType, String[] argumentNames,
+ public ProcedureEntity(CAstNode pdast, TypeSystem system, CodeInstance pd, Type declaringType, String[] argumentNames,
Map entities, MethodContext mc) {
super(entities);
fPdast = pdast;
@@ -1629,9 +1677,10 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
fMc = mc;
}
- private ProcedureEntity(CAstNode pdast, TypeSystem system, CodeInstance pd, String[] argumentNames,
+ public ProcedureEntity(CAstNode pdast, TypeSystem system, CodeInstance pd, String[] argumentNames,
Map entities, MethodContext mc) {
- this(pdast, system, pd, ((MemberInstance) pd).container(), argumentNames, entities, mc);
+ //PORT1.7 used to be this(pdast, system, pd, ((MemberInstance) pd).container(), argumentNames, entities, mc);
+ this(pdast, system, pd, ((MemberDef) pd.def()).container().get(), argumentNames, entities, mc);
}
private List formalTypes() {
@@ -1671,8 +1720,26 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
return new CAstNode[0];
}
+ private Flags getFlags() {
+ // PORT1.7
+ if (fPd instanceof ProcedureInstance) {
+ return ((MemberDef) fPd.def()).flags();
+ }
+ return Flags.NONE;
+ }
+
+ private boolean isStatic() {
+ // PORT1.7
+ if (fPd instanceof ProcedureInstance) {
+ return ((MemberDef) fPd.def()).flags().isStatic();
+ } else if (fPd instanceof InitializerInstance) {
+ return ((InitializerInstance) fPd).def().flags().isStatic();
+ }
+ return false;
+ }
+
public int getArgumentCount() {
- return fPd.flags().isStatic() ? formalTypes().size() : formalTypes().size() + 1;
+ return isStatic() ? formalTypes().size() : formalTypes().size() + 1;
}
public CAstNode getAST() {
@@ -1696,7 +1763,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
}
public Collection getQualifiers() {
- return mapFlagsToQualifiers(fPd.flags());
+ return mapFlagsToQualifiers(getFlags());
}
public CAstType getType() {
@@ -1710,7 +1777,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
(fPd instanceof MethodInstance) ? ((MethodInstance) fPd).returnType() : fSystem.Void());
}
- public List getArgumentTypes() {
+ public List getArgumentTypes() {
if (fParameterTypes == null) {
final List formalTypes = formalTypes();
fParameterTypes = new ArrayList(formalTypes.size());
@@ -1727,12 +1794,12 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
return "?";
}
- public Collection getSupertypes() {
+ public Collection getSupertypes() {
Assertions.UNREACHABLE("CAstType.FunctionImpl#getSupertypes() called???");
return null;
}
- public Collection/* */getExceptionTypes() {
+ public Collection/* */ getExceptionTypes() {
if (fExceptionTypes == null) {
fExceptionTypes = new LinkedHashSet();
@@ -1769,7 +1836,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
private FieldEntity(FieldDecl fd, WalkContext context) {
super();
- fFI = fd.fieldInstance();
+ fFI = fd.fieldDef().asInstance();
fContext = context;
}
@@ -1778,7 +1845,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
}
public String getName() {
- return fFI.name();
+ return fFI.name().toString();
}
public String getSignature() {
@@ -2070,7 +2137,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
fEntities.put(node, entity);
}
- public Map/* */getScopedEntities() {
+ public Map/* */ getScopedEntities() {
return fEntities;
}
@@ -2105,12 +2172,15 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
private static class TryCatchContext extends DelegatingContext {
@SuppressWarnings("unused")
private final Try tryNode;
+
+ private final Context context;
Collection> fCatchNodes = new ArrayList>();
- TryCatchContext(WalkContext parent, Try tryNode) {
+ TryCatchContext(WalkContext parent, Try tryNode, final Context context) {
super(parent);
this.tryNode = tryNode;
+ this.context = context;
for (Iterator catchIter = tryNode.catchBlocks().iterator(); catchIter.hasNext();) {
Catch c = (Catch) catchIter.next();
@@ -2127,16 +2197,16 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
Collection> catchNodes = new ArrayList>();
for (Iterator> iter = fCatchNodes.iterator(); iter.hasNext();) {
- Pair p = (Pair) iter.next();
- Type catchType = (Type) p.fst;
+ Pair p = iter.next();
+ Type catchType = p.fst;
// _must_ be caught
- if (label.descendsFrom(catchType) || label.equals(catchType)) {
+ if (label.isSubtype(catchType, this.context) || label.typeEquals(catchType, this.context)) {
catchNodes.add(p);
return catchNodes;
// _might_ get caught
- } else if (catchType.descendsFrom(label)) {
+ } else if (catchType.isSubtype(label, this.context)) {
catchNodes.add(p);
continue;
}
@@ -2284,22 +2354,19 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
}
}
- public PolyglotJava2CAstTranslator(ClassLoaderReference clr, NodeFactory nf, TypeSystem ts, PolyglotIdentityMapper identityMapper) {
+ public PolyglotJava2CAstTranslator(ClassLoaderReference clr, NodeFactory nf, TypeSystem ts, PolyglotIdentityMapper identityMapper, boolean replicateForDoLoops) {
fClassLoaderRef = clr;
fTypeSystem = ts;
fNodeFactory = nf;
fIdentityMapper = identityMapper;
- try {
- fNPEType = fTypeSystem.typeForName("java.lang.NullPointerException");
- fCCEType = fTypeSystem.typeForName("java.lang.ClassCastException");
- fREType = fTypeSystem.typeForName("java.lang.RuntimeException");
- fDivByZeroType = fTypeSystem.typeForName("java.lang.ArithmeticException");
- } catch (SemanticException e) {
- Assertions.UNREACHABLE("Couldn't find Polyglot type for NPE/RE!");
- }
+ this.replicateForDoLoops = replicateForDoLoops;
+ fNPEType = fTypeSystem.NullPointerException();
+ fCCEType = fTypeSystem.ClassCastException();
+ fREType = fTypeSystem.RuntimeException();
+ fDivByZeroType = fTypeSystem.ArithmeticException();
}
- protected static class PolyglotSourcePosition extends AbstractSourcePosition {
+ public static class PolyglotSourcePosition extends AbstractSourcePosition {
private final Position p;
public PolyglotSourcePosition(Position p) {
@@ -2513,13 +2580,13 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
protected void processClassMembers(Node n, ClassType classType, List members, DelegatingContext classContext,
List memberEntities) {
// Collect all initializer-related gorp
- for (Iterator memberIter = members.iterator(); memberIter.hasNext();) {
- ClassMember member = (ClassMember) memberIter.next();
+ for (Iterator memberIter = members.iterator(); memberIter.hasNext();) {
+ ClassMember member = memberIter.next();
if (member instanceof Initializer) {
Initializer initializer = (Initializer) member;
- if (initializer.flags().isStatic())
+ if (initializer.flags().flags().isStatic())
classContext.getStaticInitializers().add(initializer);
else
classContext.getInitializers().add(initializer);
@@ -2527,7 +2594,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
FieldDecl fd = (FieldDecl) member;
if (fd.init() != null) {
- if (fd.flags().isStatic())
+ if (fd.flags().flags().isStatic())
classContext.getStaticInitializers().add(fd);
else
classContext.getInitializers().add(fd);
@@ -2536,8 +2603,8 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
}
// Now process
- for (Iterator memberIter = members.iterator(); memberIter.hasNext();) {
- ClassMember member = (ClassMember) memberIter.next();
+ for (Iterator memberIter = members.iterator(); memberIter.hasNext();) {
+ ClassMember member = memberIter.next();
if (!(member instanceof Initializer)) {
CAstEntity memberEntity = walkEntity(member, classContext);
@@ -2548,7 +2615,8 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
// add class initializer, if needed
if (!classContext.getStaticInitializers().isEmpty()) {
- InitializerInstance initInstance = new InitializerInstance_c(fTypeSystem, n.position(), classType, Flags.STATIC);
+ InitializerDef initDef = fTypeSystem.initializerDef(n.position(), Types.ref(classType), Flags.STATIC);
+ InitializerInstance initInstance = fTypeSystem.createInitializerInstance(n.position(), Types.ref(initDef));
Map childEntities = HashMapFactory.make();
final MethodContext mc = new MethodContext(initInstance, childEntities, classContext);
@@ -2564,9 +2632,9 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
}
}
- protected void addConstructorsToAnonymousClass(New n, ParsedClassType anonType, ClassContext classContext,
+ protected void addConstructorsToAnonymousClass(New n, ClassType anonType, ClassContext classContext,
List memberEntities) {
- List superConstructors = ((ClassType) anonType.superType()).constructors();
+ List superConstructors = ((ClassType) anonType.superClass()).constructors();
for (Iterator iter = superConstructors.iterator(); iter.hasNext();) {
ConstructorInstance superCtor = (ConstructorInstance) iter.next();
@@ -2621,15 +2689,15 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
} else if (rootNode instanceof ClassDecl) {
final ClassDecl cd = (ClassDecl) rootNode;
final List memberEntities = new ArrayList();
- final ClassContext classContext = new ClassContext(cd.type(), memberEntities, context);
+ final ClassContext classContext = new ClassContext(cd.classDef().asType(), memberEntities, context);
- processClassMembers(rootNode, cd.type(), cd.body().members(), classContext, memberEntities);
+ processClassMembers(rootNode, cd.classDef().asType(), cd.body().members(), classContext, memberEntities);
return new ClassEntity(classContext, memberEntities, cd, cd.position());
} else if (rootNode instanceof New) {
final New n = (New) rootNode;
final List memberEntities = new ArrayList();
- ParsedClassType anonType = n.anonType();
+ ClassType anonType = (ClassType) n.anonType().asType();
String anonTypeName = anonTypeName(anonType);
final ClassContext classContext = new ClassContext(anonType, memberEntities, context);
@@ -2640,11 +2708,11 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
} else if (rootNode instanceof ProcedureDecl) {
final ProcedureDecl pd = (ProcedureDecl) rootNode;
final Map memberEntities = new LinkedHashMap();
- final MethodContext mc = new MethodContext(pd.procedureInstance(), memberEntities, context);
+ final MethodContext mc = new MethodContext(pd.procedureInstance().asInstance(), memberEntities, context);
CAstNode pdAST = null;
- if (!pd.flags().isAbstract()) {
+ if (!pd.flags().flags().isAbstract()) {
// Presumably the MethodContext's parent is a ClassContext,
// and he has the list of initializers. Hopefully the following
// will glue that stuff in the right place in any constructor body.
@@ -2654,7 +2722,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
List/* */formals = pd.formals();
String[] argNames;
int i = 0;
- if (!pd.flags().isStatic()) {
+ if (!pd.flags().flags().isStatic()) {
argNames = new String[formals.size() + 1];
argNames[i++] = "this";
} else {
@@ -2662,10 +2730,10 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
}
for (Iterator iter = formals.iterator(); iter.hasNext(); i++) {
Formal formal = (Formal) iter.next();
- argNames[i] = formal.name();
+ argNames[i] = formal.name().toString();
}
- return new ProcedureEntity(pdAST, fTypeSystem, pd.procedureInstance(), argNames, memberEntities, mc);
+ return new ProcedureEntity(pdAST, fTypeSystem, pd.procedureInstance().asInstance(), argNames, memberEntities, mc);
} else if (rootNode instanceof FieldDecl) {
final FieldDecl fd = (FieldDecl) rootNode;
@@ -2702,10 +2770,10 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
}
private int insertInitializers(WalkContext wc, CAstNode[] initCode, boolean wantStatic, int offset) {
- List inits = wantStatic ? wc.getStaticInitializers() : wc.getInitializers();
+ List inits = wantStatic ? wc.getStaticInitializers() : wc.getInitializers();
- for (Iterator iter = inits.iterator(); iter.hasNext(); offset++) {
- ClassMember init = (ClassMember) iter.next();
+ for (Iterator iter = inits.iterator(); iter.hasNext(); offset++) {
+ ClassMember init = iter.next();
CAstNode initNode = walkNodes(init, wc);
if (initNode != null) {
diff --git a/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/PolyglotSourceLoaderImpl.java b/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/PolyglotSourceLoaderImpl.java
index 06632ca88..6a9cea26b 100644
--- a/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/PolyglotSourceLoaderImpl.java
+++ b/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/PolyglotSourceLoaderImpl.java
@@ -15,6 +15,7 @@ package com.ibm.wala.cast.java.translator.polyglot;
import java.io.IOException;
+import com.ibm.wala.cast.java.ipa.callgraph.JavaSourceAnalysisScope;
import com.ibm.wala.cast.java.loader.JavaSourceLoaderImpl;
import com.ibm.wala.cast.java.translator.SourceModuleTranslator;
import com.ibm.wala.classLoader.IClassLoader;
diff --git a/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/PolyglotSourceModuleTranslator.java b/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/PolyglotSourceModuleTranslator.java
index 6f12e4c3e..db6e48f9d 100644
--- a/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/PolyglotSourceModuleTranslator.java
+++ b/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/PolyglotSourceModuleTranslator.java
@@ -8,9 +8,6 @@
* Contributors:
* IBM Corporation - initial API and implementation
*****************************************************************************/
-/*
- * Created on Oct 6, 2005
- */
package com.ibm.wala.cast.java.translator.polyglot;
import java.io.File;
@@ -23,6 +20,8 @@ import java.util.Set;
import polyglot.frontend.Compiler;
import polyglot.frontend.ExtensionInfo;
+import polyglot.frontend.Globals;
+import polyglot.frontend.Source;
import polyglot.main.Options;
import polyglot.main.UsageError;
import polyglot.util.ErrorInfo;
@@ -33,6 +32,7 @@ import com.ibm.wala.classLoader.DirectoryTreeModule;
import com.ibm.wala.classLoader.FileModule;
import com.ibm.wala.classLoader.JarFileModule;
import com.ibm.wala.classLoader.Module;
+import com.ibm.wala.classLoader.ModuleEntry;
import com.ibm.wala.classLoader.SourceFileModule;
import com.ibm.wala.ipa.callgraph.AnalysisScope;
import com.ibm.wala.types.ClassLoaderReference;
diff --git a/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/PolyglotTypeDictionary.java b/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/PolyglotTypeDictionary.java
index 498a9ecf9..802a953b5 100644
--- a/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/PolyglotTypeDictionary.java
+++ b/com.ibm.wala.cast.java.polyglot/source/com/ibm/wala/cast/java/translator/polyglot/PolyglotTypeDictionary.java
@@ -20,6 +20,7 @@ import java.util.Iterator;
import polyglot.types.ArrayType;
import polyglot.types.ClassType;
+import polyglot.types.ObjectType;
import polyglot.types.PrimitiveType;
import polyglot.types.ReferenceType;
import polyglot.types.Type;
@@ -61,18 +62,21 @@ public class PolyglotTypeDictionary extends CAstTypeDictionaryImpl {
assert fEltPolyglotType.isReference() : "Non-primitive, non-reference array element type!";
ReferenceType baseRefType = (ReferenceType) fEltPolyglotType;
Collection supers = new ArrayList();
- for (Iterator superIter = baseRefType.interfaces().iterator(); superIter.hasNext();) {
+ for (Iterator superIter = baseRefType.interfaces().iterator(); superIter.hasNext(); ) {
supers.add(getCAstTypeFor(superIter.next()));
}
- if (baseRefType.superType() != null)
- supers.add(getCAstTypeFor(baseRefType.superType()));
+ if (baseRefType instanceof ClassType) {
+ ClassType baseClassType = (ClassType) baseRefType;
+ if (baseClassType.superClass() != null)
+ supers.add(getCAstTypeFor(baseRefType.superClass()));
+ }
return supers;
}
}
protected final TypeSystem fTypeSystem;
- private final PolyglotJava2CAstTranslator fTranslator;
+ protected final PolyglotJava2CAstTranslator fTranslator;
public PolyglotTypeDictionary(TypeSystem typeSystem, PolyglotJava2CAstTranslator translator) {
fTypeSystem = typeSystem;
@@ -91,7 +95,7 @@ public class PolyglotTypeDictionary extends CAstTypeDictionaryImpl {
if (polyglotType.isClass())
type = fTranslator.new PolyglotJavaType((ClassType) astType, this, fTypeSystem);
else if (polyglotType.isPrimitive()) {
- type = JavaPrimitiveTypeMap.lookupType(((PrimitiveType) polyglotType).name());
+ type = JavaPrimitiveTypeMap.lookupType(((PrimitiveType) polyglotType).name().toString());
} else if (polyglotType.isArray()) {
type = new PolyglotJavaArrayType((ArrayType) polyglotType);
} else