merge polyglot3 branch

git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@4154 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
This commit is contained in:
dolby-oss 2011-04-27 14:55:30 +00:00
parent d6a7828730
commit 41daeadbb8
13 changed files with 537 additions and 475 deletions

View File

@ -1,9 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<classpath> <classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="source"/> <classpathentry kind="src" path="source"/>
<classpathentry kind="lib" path="lib/polyglot.jar"/> <classpathentry kind="output" path="bin"/>
<classpathentry kind="lib" path="lib/java_cup.jar"/> </classpath>
<classpathentry kind="output" path="bin"/>
</classpath>

View File

@ -1,275 +1,263 @@
#Thu Feb 03 10:12:26 EST 2011 #Mon Apr 13 15:38:50 EDT 2009
eclipse.preferences.version=1 eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
org.eclipse.jdt.core.compiler.compliance=1.5 org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.5 org.eclipse.jdt.core.compiler.source=1.5
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false 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_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_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_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_method_invocation=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=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_assignment=0 org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
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_compact_if=16 org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
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_enum_constants=0 org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
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_method_declaration=0 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 org.eclipse.jdt.core.formatter.blank_lines_after_package=1
org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 org.eclipse.jdt.core.formatter.blank_lines_before_field=1
org.eclipse.jdt.core.formatter.blank_lines_after_package=1 org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
org.eclipse.jdt.core.formatter.blank_lines_before_field=0 org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 org.eclipse.jdt.core.formatter.blank_lines_before_method=1
org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
org.eclipse.jdt.core.formatter.blank_lines_before_method=1 org.eclipse.jdt.core.formatter.blank_lines_before_package=0
org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
org.eclipse.jdt.core.formatter.blank_lines_before_package=0 org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_annotation_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_anonymous_type_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_block=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_in_case=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=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_enum_constant=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_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_method_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false org.eclipse.jdt.core.formatter.comment.format_block_comments=true
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false org.eclipse.jdt.core.formatter.comment.format_header=false
org.eclipse.jdt.core.formatter.comment.format_block_comments=true org.eclipse.jdt.core.formatter.comment.format_html=true
org.eclipse.jdt.core.formatter.comment.format_header=false org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
org.eclipse.jdt.core.formatter.comment.format_html=true org.eclipse.jdt.core.formatter.comment.format_line_comments=true
org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true org.eclipse.jdt.core.formatter.comment.format_source_code=true
org.eclipse.jdt.core.formatter.comment.format_line_comments=true org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
org.eclipse.jdt.core.formatter.comment.format_source_code=true org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
org.eclipse.jdt.core.formatter.comment.indent_root_tags=true org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert org.eclipse.jdt.core.formatter.comment.line_length=132
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert org.eclipse.jdt.core.formatter.compact_else_if=true
org.eclipse.jdt.core.formatter.comment.line_length=80 org.eclipse.jdt.core.formatter.continuation_indentation=2
org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
org.eclipse.jdt.core.formatter.compact_else_if=true org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
org.eclipse.jdt.core.formatter.continuation_indentation=2 org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false org.eclipse.jdt.core.formatter.indent_empty_lines=false
org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true org.eclipse.jdt.core.formatter.indentation.size=4
org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
org.eclipse.jdt.core.formatter.indent_empty_lines=false org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.indentation.size=2 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_after_annotation_on_local_variable=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_after_annotation_on_member=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_after_annotation_on_parameter=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_after_label=do not insert org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=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_in_empty_anonymous_type_declaration=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_in_empty_block=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_in_empty_enum_constant=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_in_empty_enum_declaration=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_in_empty_method_body=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_in_empty_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=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_colon_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=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_constructor_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_constructor_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_enum_constant_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_enum_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_explicitconstructorcall_arguments=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_for_increments=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=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_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=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_comma_in_multiple_field_declarations=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_comma_in_multiple_local_declarations=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_comma_in_parameterized_type_reference=insert org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=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_comma_in_type_arguments=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_comma_in_type_parameters=insert org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=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_angle_bracket_in_parameterized_type_reference=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_angle_bracket_in_type_arguments=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_angle_bracket_in_type_parameters=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_brace_in_array_initializer=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_bracket_in_array_allocation_expression=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_bracket_in_array_reference=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_annotation=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_cast=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_catch=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_constructor_declaration=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_enum_constant=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_opening_paren_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=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_prefix_operator=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_question_in_conditional=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_question_in_wildcard=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_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=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_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=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_after_question_in_wildcard=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_after_semicolon_in_for=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_after_unary_operator=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_and_in_type_parameter=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_assignment_operator=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_at_in_annotation_type_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=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_angle_bracket_in_parameterized_type_reference=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_angle_bracket_in_type_arguments=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_angle_bracket_in_type_parameters=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_brace_in_array_initializer=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_bracket_in_array_allocation_expression=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_bracket_in_array_reference=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_annotation=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_cast=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_catch=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_constructor_declaration=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_enum_constant=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_closing_paren_in_for=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=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_colon_in_conditional=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_colon_in_default=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_colon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=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_comma_in_allocation_expression=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_comma_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=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_colon_in_conditional=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_colon_in_default=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_colon_in_for=insert org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not 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_explicitconstructorcall_arguments=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_for_increments=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_for_inits=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_method_declaration_parameters=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_method_declaration_throws=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_method_invocation_arguments=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_multiple_field_declarations=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_multiple_local_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_parameterized_type_reference=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_superinterfaces=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_type_arguments=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_type_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_ellipsis=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_opening_angle_bracket_in_parameterized_type_reference=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_opening_angle_bracket_in_type_arguments=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_opening_angle_bracket_in_type_parameters=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_opening_brace_in_annotation_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=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_brace_in_enum_constant=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_brace_in_enum_declaration=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_method_declaration=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_switch=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_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_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=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_brace_in_constructor_declaration=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_brace_in_enum_constant=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_brace_in_enum_declaration=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_brace_in_method_declaration=insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=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_brace_in_type_declaration=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_bracket_in_array_allocation_expression=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_bracket_in_array_reference=do not insert org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=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_method_declaration=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_method_invocation=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_parenthesized_expression=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_switch=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_synchronized=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_while=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=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_postfix_operator=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_prefix_operator=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_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=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_before_prefix_operator=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_before_question_in_conditional=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_before_question_in_wildcard=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_before_semicolon=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_before_semicolon_in_for=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_before_unary_operator=do not insert org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert org.eclipse.jdt.core.formatter.lineSplit=132
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
org.eclipse.jdt.core.formatter.join_lines_in_comments=true org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
org.eclipse.jdt.core.formatter.join_wrapped_lines=true org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false org.eclipse.jdt.core.formatter.tabulation.char=space
org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false org.eclipse.jdt.core.formatter.tabulation.size=2
org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
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

View File

@ -5,14 +5,15 @@ Bundle-SymbolicName: com.ibm.wala.cast.java.polyglot
Bundle-Version: 1.0.0 Bundle-Version: 1.0.0
Bundle-Activator: com.ibm.wala.cast.java.polyglot.Activator Bundle-Activator: com.ibm.wala.cast.java.polyglot.Activator
Bundle-Vendor: IBM Bundle-Vendor: IBM
Require-Bundle: com.ibm.wala.cast.java;bundle-version="1.0.0", Require-Bundle: com.ibm.wala.cast.java,
com.ibm.wala.cast;bundle-version="1.0.0", com.ibm.wala.cast,
com.ibm.wala.core;bundle-version="1.1.3", com.ibm.wala.core,
org.eclipse.core.runtime, org.eclipse.core.runtime,
com.ibm.wala.shrike;bundle-version="1.1.3", polyglot3,
com.ibm.wala.ide;bundle-version="1.1.3", com.ibm.wala.shrike,
org.eclipse.jdt.core;bundle-version="3.4.2", org.eclipse.jdt.core,
org.eclipse.core.resources;bundle-version="3.4.1" org.eclipse.core.resources,
com.ibm.wala.ide
Bundle-RequiredExecutionEnvironment: J2SE-1.5 Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy Bundle-ActivationPolicy: lazy
Export-Package: com.ibm.wala.cast.java.client.polyglot, 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, polyglot.frontend.goals,
com.ibm.wala.cast.tree.impl, com.ibm.wala.cast.tree.impl,
com.ibm.wala.cast.java.translator, com.ibm.wala.cast.java.translator,
polyglot.frontend, com.ibm.wala.cast.java.types"
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"

View File

@ -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.ClassHierarchy;
import com.ibm.wala.ipa.cha.ClassHierarchyException; import com.ibm.wala.ipa.cha.ClassHierarchyException;
import com.ibm.wala.ipa.cha.IClassHierarchy; import com.ibm.wala.ipa.cha.IClassHierarchy;
import com.ibm.wala.ssa.ConstantValue;
import com.ibm.wala.ssa.SSAOptions; import com.ibm.wala.ssa.SSAOptions;
import com.ibm.wala.ssa.SymbolTable; import com.ibm.wala.ssa.SymbolTable;
import com.ibm.wala.types.ClassLoaderReference; import com.ibm.wala.types.ClassLoaderReference;

View File

@ -12,16 +12,11 @@ package com.ibm.wala.cast.java.translator.polyglot;
import polyglot.ast.ArrayInit; import polyglot.ast.ArrayInit;
import polyglot.ast.Expr; import polyglot.ast.Expr;
import polyglot.frontend.CyclicDependencyException;
import polyglot.frontend.ExtensionInfo;
import polyglot.frontend.Job; import polyglot.frontend.Job;
import polyglot.frontend.Pass;
import polyglot.frontend.Scheduler; import polyglot.frontend.Scheduler;
import polyglot.frontend.VisitorPass; import polyglot.frontend.VisitorGoal;
import polyglot.frontend.goals.AbstractGoal;
import polyglot.types.SemanticException; import polyglot.types.SemanticException;
import polyglot.types.Type; import polyglot.types.Type;
import polyglot.util.ErrorInfo;
import polyglot.visit.AscriptionVisitor; import polyglot.visit.AscriptionVisitor;
/** /**

View File

@ -8,24 +8,18 @@
* Contributors: * Contributors:
* IBM Corporation - initial API and implementation * IBM Corporation - initial API and implementation
*****************************************************************************/ *****************************************************************************/
/*
* Created on Oct 6, 2005
*/
package com.ibm.wala.cast.java.translator.polyglot; package com.ibm.wala.cast.java.translator.polyglot;
import polyglot.frontend.CyclicDependencyException; import polyglot.frontend.ExtensionInfo;
import polyglot.frontend.Job; import polyglot.frontend.Job;
import polyglot.frontend.Pass;
import polyglot.frontend.Scheduler; import polyglot.frontend.Scheduler;
import polyglot.frontend.goals.AbstractGoal; import polyglot.frontend.SourceGoal_c;
import polyglot.frontend.goals.EndGoal;
import polyglot.util.ErrorInfo;
import com.ibm.wala.cast.java.loader.JavaSourceLoaderImpl; import com.ibm.wala.cast.java.loader.JavaSourceLoaderImpl;
import com.ibm.wala.cast.java.translator.Java2IRTranslator; 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 * @author rfuhrer
*/ */

View File

@ -13,9 +13,13 @@
*/ */
package com.ibm.wala.cast.java.translator.polyglot; package com.ibm.wala.cast.java.translator.polyglot;
import java.util.List;
import polyglot.frontend.Goal;
import polyglot.frontend.JLExtensionInfo; import polyglot.frontend.JLExtensionInfo;
import polyglot.frontend.JLScheduler;
import polyglot.frontend.Job; import polyglot.frontend.Job;
import polyglot.frontend.goals.Goal; import polyglot.frontend.Scheduler;
import com.ibm.wala.cast.tree.impl.CAstRewriterFactory; import com.ibm.wala.cast.tree.impl.CAstRewriterFactory;

View File

@ -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.<br>
* 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;
}
}

View File

@ -14,7 +14,7 @@ import polyglot.types.CodeInstance;
import polyglot.types.ConstructorInstance; import polyglot.types.ConstructorInstance;
import polyglot.types.FieldInstance; import polyglot.types.FieldInstance;
import polyglot.types.InitializerInstance; import polyglot.types.InitializerInstance;
import polyglot.types.MemberInstance; import polyglot.types.MemberDef;
import polyglot.types.MethodInstance; import polyglot.types.MethodInstance;
import polyglot.types.PrimitiveType; import polyglot.types.PrimitiveType;
import polyglot.types.ProcedureInstance; import polyglot.types.ProcedureInstance;

View File

@ -62,6 +62,7 @@ import polyglot.ast.FieldDecl;
import polyglot.ast.FloatLit; import polyglot.ast.FloatLit;
import polyglot.ast.For; import polyglot.ast.For;
import polyglot.ast.Formal; import polyglot.ast.Formal;
import polyglot.ast.Id;
import polyglot.ast.If; import polyglot.ast.If;
import polyglot.ast.Import; import polyglot.ast.Import;
import polyglot.ast.Initializer; import polyglot.ast.Initializer;
@ -99,18 +100,20 @@ import polyglot.types.ArrayType;
import polyglot.types.ClassType; import polyglot.types.ClassType;
import polyglot.types.CodeInstance; import polyglot.types.CodeInstance;
import polyglot.types.ConstructorInstance; import polyglot.types.ConstructorInstance;
import polyglot.types.Context;
import polyglot.types.FieldInstance; import polyglot.types.FieldInstance;
import polyglot.types.Flags; import polyglot.types.Flags;
import polyglot.types.InitializerDef;
import polyglot.types.InitializerInstance; import polyglot.types.InitializerInstance;
import polyglot.types.InitializerInstance_c; import polyglot.types.MemberDef;
import polyglot.types.MemberInstance;
import polyglot.types.MethodInstance; import polyglot.types.MethodInstance;
import polyglot.types.ParsedClassType; import polyglot.types.ObjectType;
import polyglot.types.ProcedureInstance; import polyglot.types.ProcedureInstance;
import polyglot.types.ReferenceType;
import polyglot.types.SemanticException; import polyglot.types.SemanticException;
import polyglot.types.StructType;
import polyglot.types.Type; import polyglot.types.Type;
import polyglot.types.TypeSystem; import polyglot.types.TypeSystem;
import polyglot.types.Types;
import polyglot.util.Position; import polyglot.util.Position;
import com.ibm.wala.cast.ir.translator.AstTranslator.InternalCAstSymbol; 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 // and glue that code into the right place relative to the
// constructor method body ("wherever that may turn out to be"). // constructor method body ("wherever that may turn out to be").
List/* <FieldDecl|Initializer> */inits = mc.getInitializers(); List/* <FieldDecl|Initializer> */inits = mc.getInitializers();
Block body = cd.body(); Block body = cd.body();
if (hasSuperCall(body)) { if (hasSuperCall(body)) {
// Split at call to super: // Split at call to super:
// super(); // super();
@ -314,21 +317,28 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
return walkNodes(body, mc); return walkNodes(body, mc);
} else { } else {
// add explicit call to default super() // add explicit call to default super()
// TODO following superClass lookup of default ctor won't work if we // RMF 4/17/2009- The following search for a superClass default ctor
// process Object in source... // won't work if we process Object in source. In particular, the
ClassType superClass = (ClassType) cd.constructorInstance().container().superType(); // superClass might be null. In that case, simply omit the explicit
ProcedureInstance defaultSuperCtor = findDefaultCtor(superClass); // super() call.
CAstNode[] bodyNodes = new CAstNode[inits.size() + body.statements().size() + 1]; ClassType superClass = (ClassType) ((ObjectType) cd.constructorDef().asInstance().container()).superClass();
CallSiteReference callSiteRef = CallSiteReference.make(0, fIdentityMapper.getMethodRef(defaultSuperCtor), CAstNode[] bodyNodes;
IInvokeInstruction.Dispatch.SPECIAL); 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++) { for (Iterator iter = body.statements().iterator(); iter.hasNext(); idx++) {
Stmt s = (Stmt) iter.next(); Stmt s = (Stmt) iter.next();
bodyNodes[idx] = walkNodes(s, mc); bodyNodes[idx] = walkNodes(s, mc);
@ -352,13 +362,13 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
// Generate CAST node for the initializer (init()) // Generate CAST node for the initializer (init())
// Type targetType = f.memberInstance().container(); // Type targetType = f.memberInstance().container();
// Type fieldType = f.type().type(); // 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 // We use null to indicate an OBJECT_REF to a static field, as the
// FieldReference doesn't // FieldReference doesn't
// hold enough info to determine this. In this case, (unlike field ref) // hold enough info to determine this. In this case, (unlike field ref)
// we don't have a // we don't have a
// target expr to evaluate. // 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); fFactory, f, CAstNode.THIS);
CAstNode lhsNode = makeNode(ctorContext, fFactory, f, CAstNode.OBJECT_REF, thisNode, fFactory.makeConstant(fieldRef)); 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) { protected CAstOperator mapAssignOperator(Assign.Operator op) {
if (op == Assign.ADD_ASSIGN) if (op == Assign.ADD_ASSIGN)
return CAstOperator.OP_ADD; return CAstOperator.OP_ADD;
@ -574,7 +591,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
private void handleThrowsFromCall(ProcedureInstance procedureInstance, Node callAstNode, WalkContext wc) { private void handleThrowsFromCall(ProcedureInstance procedureInstance, Node callAstNode, WalkContext wc) {
List<Type> throwTypes = procedureInstance.throwTypes(); List<Type> throwTypes = procedureInstance.throwTypes();
for (Iterator<Type> iter = IteratorPlusOne.make(throwTypes.iterator(), fREType); iter.hasNext();) { for (Iterator<Type> iter = IteratorPlusOne.make(throwTypes.iterator(), fREType); iter.hasNext();) {
Type thrownType = (Type) iter.next(); Type thrownType = iter.next();
Collection/* <Pair<Type,Node>> */catchTargets = wc.getCatchTargets(thrownType); Collection/* <Pair<Type,Node>> */catchTargets = wc.getCatchTargets(thrownType);
for (Iterator targetIter = catchTargets.iterator(); targetIter.hasNext();) { for (Iterator targetIter = catchTargets.iterator(); targetIter.hasNext();) {
@ -588,7 +605,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
public CAstNode visit(Call c, WalkContext wc) { public CAstNode visit(Call c, WalkContext wc) {
MethodInstance methodInstance = c.methodInstance(); MethodInstance methodInstance = c.methodInstance();
boolean isStatic = methodInstance.flags().isStatic(); boolean isStatic = methodInstance.flags().isStatic();
ReferenceType methodOwner = methodInstance.container(); StructType methodOwner = methodInstance.container();
if (methodOwner.isArray()) { if (methodOwner.isArray()) {
List realOne = methodInstance.overrides(); List realOne = methodInstance.overrides();
@ -879,17 +896,28 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
public CAstNode visit(ArrayAccess aa, WalkContext wc) { public CAstNode visit(ArrayAccess aa, WalkContext wc) {
TypeReference eltTypeRef = fIdentityMapper.getTypeRef(aa.type()); 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); Collection excTargets = wc.getCatchTargets(fNPEType);
if (!excTargets.isEmpty()) { if (!excTargets.isEmpty()) {
// connect NPE exception edge to relevant catch targets // connect NPE exception edge to relevant catch targets
// (presumably only one) // (presumably only one)
for (Iterator iterator = excTargets.iterator(); iterator.hasNext();) { for (Iterator iterator = excTargets.iterator(); iterator.hasNext();) {
Pair catchPair = (Pair) iterator.next(); Pair catchPair = (Pair) iterator.next();
wc.cfg().add(aa, catchPair.snd, fNPEType); wc.cfg().add(n, catchPair.snd, fNPEType);
} }
} else { } else {
// connect exception edge to exit // 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), 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) { public CAstNode visit(Field f, WalkContext wc) {
Receiver target = f.target(); Receiver target = f.target();
Type targetType = target.type(); Type targetType = target.type();
// Type fieldType = f.type();
if (targetType.isArray()) { if (targetType.isArray()) {
assert f.name().equals("length"); assert f.name().equals("length");
return makeNode(wc, fFactory, f, CAstNode.ARRAY_LENGTH, walkNodes(target, wc)); 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(); FieldInstance fi = f.fieldInstance();
FieldReference fieldRef = fIdentityMapper.getFieldRef(fi);
CAstNode targetNode = walkNodes(target, wc);
if (fi.flags().isStatic()) { if (fi.flags().isStatic()) {
// JLS says: evaluate the target of the field ref and throw it away. // 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) { 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) { public CAstNode visit(ClassBody cb, WalkContext wc) {
@ -986,10 +1013,12 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
public CAstNode visit(Branch b, WalkContext wc) { public CAstNode visit(Branch b, WalkContext wc) {
Node target = null; Node target = null;
Id labelNode = b.labelNode();
String labelStr = labelNode != null ? labelNode.id().toString() : null;
if (b.kind() == Branch.BREAK) { if (b.kind() == Branch.BREAK) {
target = wc.getBreakFor(b.label()); target = wc.getBreakFor(labelStr);
} else { } else {
target = wc.getContinueFor(b.label()); target = wc.getContinueFor(labelStr);
} }
assert target != null; assert target != null;
@ -1028,7 +1057,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
Block body = c.body(); Block body = c.body();
Formal f = c.formal(); 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); CAstNode localScope = makeNode(wc, fFactory, c, CAstNode.LOCAL_SCOPE, excDecl);
wc.cfg().map(c, excDecl); wc.cfg().map(c, excDecl);
@ -1049,7 +1078,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
stmt = (Node) ((Block) stmt).statements().iterator().next(); stmt = (Node) ((Block) stmt).statements().iterator().next();
} }
wc.getLabelMap().put(stmt, l.label()); wc.getLabelMap().put(stmt, l.labelNode().id().toString());
CAstNode result; CAstNode result;
if (!(l.statement() instanceof Empty)) { if (!(l.statement() instanceof Empty)) {
@ -1069,7 +1098,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
} }
public CAstNode visit(LocalClassDecl lcd, WalkContext wc) { 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); CAstEntity classEntity = walkEntity(lcd.decl(), wc);
@ -1080,12 +1109,14 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
} }
protected Node makeBreakTarget(Node loop) { protected Node makeBreakTarget(Node loop) {
return fNodeFactory.Labeled(Position.COMPILER_GENERATED, "breakLabel" + loop.position().toString().replace('.', '_'), return fNodeFactory.Labeled(Position.COMPILER_GENERATED,
fNodeFactory.Empty(Position.COMPILER_GENERATED)); fNodeFactory.Id(Position.COMPILER_GENERATED, "breakLabel" + loop.position().toString().replace('.', '_')),
fNodeFactory.Empty(Position.COMPILER_GENERATED));
} }
protected Node makeContinueTarget(Node loop) { 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)); fNodeFactory.Empty(Position.COMPILER_GENERATED));
} }
@ -1242,7 +1273,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
// try/catch/[finally] // try/catch/[finally]
} else { } else {
TryCatchContext tc = new TryCatchContext(wc, t); TryCatchContext tc = new TryCatchContext(wc, t, fTypeSystem.emptyContext());
CAstNode tryNode = walkNodes(tryBlock, tc); CAstNode tryNode = walkNodes(tryBlock, tc);
for (Iterator iter = catchBlocks.iterator(); iter.hasNext();) { for (Iterator iter = catchBlocks.iterator(); iter.hasNext();) {
@ -1294,9 +1325,9 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
else else
defaultValue = CAstSymbol.NULL_DEFAULT_VALUE; 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); defaultValue)), initNode);
} }
@ -1333,7 +1364,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
} }
public CAstNode visit(Formal f, WalkContext wc) { 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<CAstEntity> fTopLevelDecls; private final Collection<CAstEntity> fTopLevelDecls;
public CompilationUnitEntity(SourceFile file, List<CAstEntity> topLevelDecls) { public CompilationUnitEntity(SourceFile file, List<CAstEntity> topLevelDecls) {
fName = (file.package_() == null) ? "" : file.package_().package_().fullName().replace('.', '/'); fName = (file.package_() == null) ? "" : file.package_().package_().get().fullName().toString().replace('.', '/');
fTopLevelDecls = topLevelDecls; fTopLevelDecls = topLevelDecls;
} }
@ -1415,12 +1446,12 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
} }
} }
public final class PolyglotJavaType implements JavaType { public class PolyglotJavaType implements JavaType {
private final CAstTypeDictionary fDict; protected final CAstTypeDictionary fDict;
private final TypeSystem fSystem; protected final TypeSystem fSystem;
private final ClassType fType; protected final ClassType fType;
private Collection<CAstType> fSuperTypes = null; private Collection<CAstType> fSuperTypes = null;
@ -1432,8 +1463,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
} }
public String getName() { public String getName() {
// TODO Will the IdentityMapper do the right thing for anonymous // TODO Will the IdentityMapper do the right thing for anonymous classes?
// classes?
// If so, we can delete most of the following logic... // If so, we can delete most of the following logic...
if (fType.isLocal() || fType.isAnonymous()) { if (fType.isLocal() || fType.isAnonymous()) {
return fIdentityMapper.anonLocalTypeToTypeID(fType); return fIdentityMapper.anonLocalTypeToTypeID(fType);
@ -1441,7 +1471,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
return fIdentityMapper.getTypeRef(fType).getName().toString(); return fIdentityMapper.getTypeRef(fType).getName().toString();
} }
public Collection getSupertypes() { public Collection<CAstType> getSupertypes() {
if (fSuperTypes == null) { if (fSuperTypes == null) {
buildSuperTypes(); buildSuperTypes();
} }
@ -1452,20 +1482,27 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
// TODO this is a source entity, but it might actually be the root type // TODO this is a source entity, but it might actually be the root type
// (Object), so assume # intfs + 1 // (Object), so assume # intfs + 1
Type superType; Type superType;
try { if (fType.superClass() == null && fType != fSystem.Object()) {
superType = (fType.superType() == null) ? fSystem.typeForName("java.lang.Object") : fType.superType(); superType = fSystem.Object(); // fSystem.Object() MUST be the root of the class hierarchy
} catch (SemanticException e) { } else {
Assertions.UNREACHABLE("Can't find java.lang.Object???"); superType = fType.superClass();
return;
} }
int N = fType.interfaces().size() + 1; int N = fType.interfaces().size() + 1;
fSuperTypes = new ArrayList<CAstType>(N); fSuperTypes = new ArrayList<CAstType>(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. // created CAstType's for every type in the program being analyzed.
fSuperTypes.add(fDict.getCAstTypeFor(superType)); if (superType != null) {
for (Iterator iter = fType.interfaces().iterator(); iter.hasNext();) { fSuperTypes.add(fDict.getCAstTypeFor(superType));
}
for (Iterator iter = fType.interfaces().iterator(); iter.hasNext(); ) {
Type t = (Type) iter.next(); 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)); fSuperTypes.add(fDict.getCAstTypeFor(t));
} }
} }
@ -1475,6 +1512,9 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
} }
public boolean isInterface() { 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(); return fType.flags().isInterface();
} }
} }
@ -1484,8 +1524,8 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
public CodeBodyEntity(Map<CAstNode, CAstEntity> entities) { public CodeBodyEntity(Map<CAstNode, CAstEntity> entities) {
fEntities = new LinkedHashMap<CAstNode, Collection<CAstEntity>>(); fEntities = new LinkedHashMap<CAstNode, Collection<CAstEntity>>();
for (Iterator keys = entities.keySet().iterator(); keys.hasNext();) { for (Iterator<CAstNode> keys = entities.keySet().iterator(); keys.hasNext();) {
CAstNode key = (CAstNode) keys.next(); CAstNode key = keys.next();
fEntities.put(key, Collections.singleton(entities.get(key))); fEntities.put(key, Collections.singleton(entities.get(key)));
} }
} }
@ -1520,7 +1560,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
private final CAstSourcePositionMap.Position sourcePosition; private final CAstSourcePositionMap.Position sourcePosition;
private ClassEntity(ClassContext context, List<CAstEntity> entities, ClassDecl cd, Position p) { private ClassEntity(ClassContext context, List<CAstEntity> 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<CAstEntity> entities, ClassType ct, String name, Position p) { private ClassEntity(ClassContext context, List<CAstEntity> entities, ClassType ct, String name, Position p) {
@ -1597,12 +1637,20 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
} }
public Collection getQualifiers() { 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()); return mapFlagsToQualifiers(fCT.flags());
} }
public CAstType getType() { public CAstType getType() {
return new PolyglotJavaType(fCT, getTypeDict(), fTypeSystem); return new PolyglotJavaType(fCT, getTypeDict(), fTypeSystem);
} }
@Override
public String toString() {
return fCT.fullName().toString();
}
} }
protected final class ProcedureEntity extends CodeBodyEntity implements JavaProcedureEntity { protected final class ProcedureEntity extends CodeBodyEntity implements JavaProcedureEntity {
@ -1618,7 +1666,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
private final String[] argumentNames; 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<CAstNode, CAstEntity> entities, MethodContext mc) { Map<CAstNode, CAstEntity> entities, MethodContext mc) {
super(entities); super(entities);
fPdast = pdast; fPdast = pdast;
@ -1629,9 +1677,10 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
fMc = mc; fMc = mc;
} }
private ProcedureEntity(CAstNode pdast, TypeSystem system, CodeInstance pd, String[] argumentNames, public ProcedureEntity(CAstNode pdast, TypeSystem system, CodeInstance pd, String[] argumentNames,
Map<CAstNode, CAstEntity> entities, MethodContext mc) { Map<CAstNode, CAstEntity> 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() { private List formalTypes() {
@ -1671,8 +1720,26 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
return new CAstNode[0]; 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() { public int getArgumentCount() {
return fPd.flags().isStatic() ? formalTypes().size() : formalTypes().size() + 1; return isStatic() ? formalTypes().size() : formalTypes().size() + 1;
} }
public CAstNode getAST() { public CAstNode getAST() {
@ -1696,7 +1763,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
} }
public Collection getQualifiers() { public Collection getQualifiers() {
return mapFlagsToQualifiers(fPd.flags()); return mapFlagsToQualifiers(getFlags());
} }
public CAstType getType() { public CAstType getType() {
@ -1710,7 +1777,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
(fPd instanceof MethodInstance) ? ((MethodInstance) fPd).returnType() : fSystem.Void()); (fPd instanceof MethodInstance) ? ((MethodInstance) fPd).returnType() : fSystem.Void());
} }
public List getArgumentTypes() { public List<CAstType> getArgumentTypes() {
if (fParameterTypes == null) { if (fParameterTypes == null) {
final List formalTypes = formalTypes(); final List formalTypes = formalTypes();
fParameterTypes = new ArrayList<CAstType>(formalTypes.size()); fParameterTypes = new ArrayList<CAstType>(formalTypes.size());
@ -1727,12 +1794,12 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
return "?"; return "?";
} }
public Collection getSupertypes() { public Collection<CAstType> getSupertypes() {
Assertions.UNREACHABLE("CAstType.FunctionImpl#getSupertypes() called???"); Assertions.UNREACHABLE("CAstType.FunctionImpl#getSupertypes() called???");
return null; return null;
} }
public Collection/* <CAstType> */getExceptionTypes() { public Collection/* <CAstType> */<CAstType> getExceptionTypes() {
if (fExceptionTypes == null) { if (fExceptionTypes == null) {
fExceptionTypes = new LinkedHashSet<CAstType>(); fExceptionTypes = new LinkedHashSet<CAstType>();
@ -1769,7 +1836,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
private FieldEntity(FieldDecl fd, WalkContext context) { private FieldEntity(FieldDecl fd, WalkContext context) {
super(); super();
fFI = fd.fieldInstance(); fFI = fd.fieldDef().asInstance();
fContext = context; fContext = context;
} }
@ -1778,7 +1845,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
} }
public String getName() { public String getName() {
return fFI.name(); return fFI.name().toString();
} }
public String getSignature() { public String getSignature() {
@ -2070,7 +2137,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
fEntities.put(node, entity); fEntities.put(node, entity);
} }
public Map/* <CAstNode,CAstEntity> */getScopedEntities() { public Map/* <CAstNode,CAstEntity> */<CAstNode, CAstEntity> getScopedEntities() {
return fEntities; return fEntities;
} }
@ -2105,12 +2172,15 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
private static class TryCatchContext extends DelegatingContext { private static class TryCatchContext extends DelegatingContext {
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final Try tryNode; private final Try tryNode;
private final Context context;
Collection<Pair<Type, Object>> fCatchNodes = new ArrayList<Pair<Type, Object>>(); Collection<Pair<Type, Object>> fCatchNodes = new ArrayList<Pair<Type, Object>>();
TryCatchContext(WalkContext parent, Try tryNode) { TryCatchContext(WalkContext parent, Try tryNode, final Context context) {
super(parent); super(parent);
this.tryNode = tryNode; this.tryNode = tryNode;
this.context = context;
for (Iterator catchIter = tryNode.catchBlocks().iterator(); catchIter.hasNext();) { for (Iterator catchIter = tryNode.catchBlocks().iterator(); catchIter.hasNext();) {
Catch c = (Catch) catchIter.next(); Catch c = (Catch) catchIter.next();
@ -2127,16 +2197,16 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
Collection<Pair<Type, Object>> catchNodes = new ArrayList<Pair<Type, Object>>(); Collection<Pair<Type, Object>> catchNodes = new ArrayList<Pair<Type, Object>>();
for (Iterator<Pair<Type, Object>> iter = fCatchNodes.iterator(); iter.hasNext();) { for (Iterator<Pair<Type, Object>> iter = fCatchNodes.iterator(); iter.hasNext();) {
Pair<Type, Object> p = (Pair<Type, Object>) iter.next(); Pair<Type, Object> p = iter.next();
Type catchType = (Type) p.fst; Type catchType = p.fst;
// _must_ be caught // _must_ be caught
if (label.descendsFrom(catchType) || label.equals(catchType)) { if (label.isSubtype(catchType, this.context) || label.typeEquals(catchType, this.context)) {
catchNodes.add(p); catchNodes.add(p);
return catchNodes; return catchNodes;
// _might_ get caught // _might_ get caught
} else if (catchType.descendsFrom(label)) { } else if (catchType.isSubtype(label, this.context)) {
catchNodes.add(p); catchNodes.add(p);
continue; 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; fClassLoaderRef = clr;
fTypeSystem = ts; fTypeSystem = ts;
fNodeFactory = nf; fNodeFactory = nf;
fIdentityMapper = identityMapper; fIdentityMapper = identityMapper;
try { this.replicateForDoLoops = replicateForDoLoops;
fNPEType = fTypeSystem.typeForName("java.lang.NullPointerException"); fNPEType = fTypeSystem.NullPointerException();
fCCEType = fTypeSystem.typeForName("java.lang.ClassCastException"); fCCEType = fTypeSystem.ClassCastException();
fREType = fTypeSystem.typeForName("java.lang.RuntimeException"); fREType = fTypeSystem.RuntimeException();
fDivByZeroType = fTypeSystem.typeForName("java.lang.ArithmeticException"); fDivByZeroType = fTypeSystem.ArithmeticException();
} catch (SemanticException e) {
Assertions.UNREACHABLE("Couldn't find Polyglot type for NPE/RE!");
}
} }
protected static class PolyglotSourcePosition extends AbstractSourcePosition { public static class PolyglotSourcePosition extends AbstractSourcePosition {
private final Position p; private final Position p;
public PolyglotSourcePosition(Position p) { public PolyglotSourcePosition(Position p) {
@ -2513,13 +2580,13 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
protected void processClassMembers(Node n, ClassType classType, List<ClassMember> members, DelegatingContext classContext, protected void processClassMembers(Node n, ClassType classType, List<ClassMember> members, DelegatingContext classContext,
List<CAstEntity> memberEntities) { List<CAstEntity> memberEntities) {
// Collect all initializer-related gorp // Collect all initializer-related gorp
for (Iterator memberIter = members.iterator(); memberIter.hasNext();) { for (Iterator<ClassMember> memberIter = members.iterator(); memberIter.hasNext();) {
ClassMember member = (ClassMember) memberIter.next(); ClassMember member = memberIter.next();
if (member instanceof Initializer) { if (member instanceof Initializer) {
Initializer initializer = (Initializer) member; Initializer initializer = (Initializer) member;
if (initializer.flags().isStatic()) if (initializer.flags().flags().isStatic())
classContext.getStaticInitializers().add(initializer); classContext.getStaticInitializers().add(initializer);
else else
classContext.getInitializers().add(initializer); classContext.getInitializers().add(initializer);
@ -2527,7 +2594,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
FieldDecl fd = (FieldDecl) member; FieldDecl fd = (FieldDecl) member;
if (fd.init() != null) { if (fd.init() != null) {
if (fd.flags().isStatic()) if (fd.flags().flags().isStatic())
classContext.getStaticInitializers().add(fd); classContext.getStaticInitializers().add(fd);
else else
classContext.getInitializers().add(fd); classContext.getInitializers().add(fd);
@ -2536,8 +2603,8 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
} }
// Now process // Now process
for (Iterator memberIter = members.iterator(); memberIter.hasNext();) { for (Iterator<ClassMember> memberIter = members.iterator(); memberIter.hasNext();) {
ClassMember member = (ClassMember) memberIter.next(); ClassMember member = memberIter.next();
if (!(member instanceof Initializer)) { if (!(member instanceof Initializer)) {
CAstEntity memberEntity = walkEntity(member, classContext); CAstEntity memberEntity = walkEntity(member, classContext);
@ -2548,7 +2615,8 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
// add class initializer, if needed // add class initializer, if needed
if (!classContext.getStaticInitializers().isEmpty()) { 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<CAstNode, CAstEntity> childEntities = HashMapFactory.make(); Map<CAstNode, CAstEntity> childEntities = HashMapFactory.make();
final MethodContext mc = new MethodContext(initInstance, childEntities, classContext); 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<CAstEntity> memberEntities) { List<CAstEntity> memberEntities) {
List superConstructors = ((ClassType) anonType.superType()).constructors(); List superConstructors = ((ClassType) anonType.superClass()).constructors();
for (Iterator iter = superConstructors.iterator(); iter.hasNext();) { for (Iterator iter = superConstructors.iterator(); iter.hasNext();) {
ConstructorInstance superCtor = (ConstructorInstance) iter.next(); ConstructorInstance superCtor = (ConstructorInstance) iter.next();
@ -2621,15 +2689,15 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
} else if (rootNode instanceof ClassDecl) { } else if (rootNode instanceof ClassDecl) {
final ClassDecl cd = (ClassDecl) rootNode; final ClassDecl cd = (ClassDecl) rootNode;
final List<CAstEntity> memberEntities = new ArrayList<CAstEntity>(); final List<CAstEntity> memberEntities = new ArrayList<CAstEntity>();
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()); return new ClassEntity(classContext, memberEntities, cd, cd.position());
} else if (rootNode instanceof New) { } else if (rootNode instanceof New) {
final New n = (New) rootNode; final New n = (New) rootNode;
final List<CAstEntity> memberEntities = new ArrayList<CAstEntity>(); final List<CAstEntity> memberEntities = new ArrayList<CAstEntity>();
ParsedClassType anonType = n.anonType(); ClassType anonType = (ClassType) n.anonType().asType();
String anonTypeName = anonTypeName(anonType); String anonTypeName = anonTypeName(anonType);
final ClassContext classContext = new ClassContext(anonType, memberEntities, context); final ClassContext classContext = new ClassContext(anonType, memberEntities, context);
@ -2640,11 +2708,11 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
} else if (rootNode instanceof ProcedureDecl) { } else if (rootNode instanceof ProcedureDecl) {
final ProcedureDecl pd = (ProcedureDecl) rootNode; final ProcedureDecl pd = (ProcedureDecl) rootNode;
final Map<CAstNode, CAstEntity> memberEntities = new LinkedHashMap<CAstNode, CAstEntity>(); final Map<CAstNode, CAstEntity> memberEntities = new LinkedHashMap<CAstNode, CAstEntity>();
final MethodContext mc = new MethodContext(pd.procedureInstance(), memberEntities, context); final MethodContext mc = new MethodContext(pd.procedureInstance().asInstance(), memberEntities, context);
CAstNode pdAST = null; CAstNode pdAST = null;
if (!pd.flags().isAbstract()) { if (!pd.flags().flags().isAbstract()) {
// Presumably the MethodContext's parent is a ClassContext, // Presumably the MethodContext's parent is a ClassContext,
// and he has the list of initializers. Hopefully the following // and he has the list of initializers. Hopefully the following
// will glue that stuff in the right place in any constructor body. // will glue that stuff in the right place in any constructor body.
@ -2654,7 +2722,7 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
List/* <Formal> */formals = pd.formals(); List/* <Formal> */formals = pd.formals();
String[] argNames; String[] argNames;
int i = 0; int i = 0;
if (!pd.flags().isStatic()) { if (!pd.flags().flags().isStatic()) {
argNames = new String[formals.size() + 1]; argNames = new String[formals.size() + 1];
argNames[i++] = "this"; argNames[i++] = "this";
} else { } else {
@ -2662,10 +2730,10 @@ public class PolyglotJava2CAstTranslator implements TranslatorToCAst {
} }
for (Iterator iter = formals.iterator(); iter.hasNext(); i++) { for (Iterator iter = formals.iterator(); iter.hasNext(); i++) {
Formal formal = (Formal) iter.next(); 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) { } else if (rootNode instanceof FieldDecl) {
final FieldDecl fd = (FieldDecl) rootNode; 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) { private int insertInitializers(WalkContext wc, CAstNode[] initCode, boolean wantStatic, int offset) {
List inits = wantStatic ? wc.getStaticInitializers() : wc.getInitializers(); List<ClassMember> inits = wantStatic ? wc.getStaticInitializers() : wc.getInitializers();
for (Iterator iter = inits.iterator(); iter.hasNext(); offset++) { for (Iterator<ClassMember> iter = inits.iterator(); iter.hasNext(); offset++) {
ClassMember init = (ClassMember) iter.next(); ClassMember init = iter.next();
CAstNode initNode = walkNodes(init, wc); CAstNode initNode = walkNodes(init, wc);
if (initNode != null) { if (initNode != null) {

View File

@ -15,6 +15,7 @@ package com.ibm.wala.cast.java.translator.polyglot;
import java.io.IOException; 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.loader.JavaSourceLoaderImpl;
import com.ibm.wala.cast.java.translator.SourceModuleTranslator; import com.ibm.wala.cast.java.translator.SourceModuleTranslator;
import com.ibm.wala.classLoader.IClassLoader; import com.ibm.wala.classLoader.IClassLoader;

View File

@ -8,9 +8,6 @@
* Contributors: * Contributors:
* IBM Corporation - initial API and implementation * IBM Corporation - initial API and implementation
*****************************************************************************/ *****************************************************************************/
/*
* Created on Oct 6, 2005
*/
package com.ibm.wala.cast.java.translator.polyglot; package com.ibm.wala.cast.java.translator.polyglot;
import java.io.File; import java.io.File;
@ -23,6 +20,8 @@ import java.util.Set;
import polyglot.frontend.Compiler; import polyglot.frontend.Compiler;
import polyglot.frontend.ExtensionInfo; import polyglot.frontend.ExtensionInfo;
import polyglot.frontend.Globals;
import polyglot.frontend.Source;
import polyglot.main.Options; import polyglot.main.Options;
import polyglot.main.UsageError; import polyglot.main.UsageError;
import polyglot.util.ErrorInfo; 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.FileModule;
import com.ibm.wala.classLoader.JarFileModule; import com.ibm.wala.classLoader.JarFileModule;
import com.ibm.wala.classLoader.Module; import com.ibm.wala.classLoader.Module;
import com.ibm.wala.classLoader.ModuleEntry;
import com.ibm.wala.classLoader.SourceFileModule; import com.ibm.wala.classLoader.SourceFileModule;
import com.ibm.wala.ipa.callgraph.AnalysisScope; import com.ibm.wala.ipa.callgraph.AnalysisScope;
import com.ibm.wala.types.ClassLoaderReference; import com.ibm.wala.types.ClassLoaderReference;

View File

@ -20,6 +20,7 @@ import java.util.Iterator;
import polyglot.types.ArrayType; import polyglot.types.ArrayType;
import polyglot.types.ClassType; import polyglot.types.ClassType;
import polyglot.types.ObjectType;
import polyglot.types.PrimitiveType; import polyglot.types.PrimitiveType;
import polyglot.types.ReferenceType; import polyglot.types.ReferenceType;
import polyglot.types.Type; import polyglot.types.Type;
@ -61,18 +62,21 @@ public class PolyglotTypeDictionary extends CAstTypeDictionaryImpl {
assert fEltPolyglotType.isReference() : "Non-primitive, non-reference array element type!"; assert fEltPolyglotType.isReference() : "Non-primitive, non-reference array element type!";
ReferenceType baseRefType = (ReferenceType) fEltPolyglotType; ReferenceType baseRefType = (ReferenceType) fEltPolyglotType;
Collection<CAstType> supers = new ArrayList<CAstType>(); Collection<CAstType> supers = new ArrayList<CAstType>();
for (Iterator superIter = baseRefType.interfaces().iterator(); superIter.hasNext();) { for (Iterator superIter = baseRefType.interfaces().iterator(); superIter.hasNext(); ) {
supers.add(getCAstTypeFor(superIter.next())); supers.add(getCAstTypeFor(superIter.next()));
} }
if (baseRefType.superType() != null) if (baseRefType instanceof ClassType) {
supers.add(getCAstTypeFor(baseRefType.superType())); ClassType baseClassType = (ClassType) baseRefType;
if (baseClassType.superClass() != null)
supers.add(getCAstTypeFor(baseRefType.superClass()));
}
return supers; return supers;
} }
} }
protected final TypeSystem fTypeSystem; protected final TypeSystem fTypeSystem;
private final PolyglotJava2CAstTranslator fTranslator; protected final PolyglotJava2CAstTranslator fTranslator;
public PolyglotTypeDictionary(TypeSystem typeSystem, PolyglotJava2CAstTranslator translator) { public PolyglotTypeDictionary(TypeSystem typeSystem, PolyglotJava2CAstTranslator translator) {
fTypeSystem = typeSystem; fTypeSystem = typeSystem;
@ -91,7 +95,7 @@ public class PolyglotTypeDictionary extends CAstTypeDictionaryImpl {
if (polyglotType.isClass()) if (polyglotType.isClass())
type = fTranslator.new PolyglotJavaType((ClassType) astType, this, fTypeSystem); type = fTranslator.new PolyglotJavaType((ClassType) astType, this, fTypeSystem);
else if (polyglotType.isPrimitive()) { else if (polyglotType.isPrimitive()) {
type = JavaPrimitiveTypeMap.lookupType(((PrimitiveType) polyglotType).name()); type = JavaPrimitiveTypeMap.lookupType(((PrimitiveType) polyglotType).name().toString());
} else if (polyglotType.isArray()) { } else if (polyglotType.isArray()) {
type = new PolyglotJavaArrayType((ArrayType) polyglotType); type = new PolyglotJavaArrayType((ArrayType) polyglotType);
} else } else