1
0
mirror of https://github.com/1C-Company/v8-code-style.git synced 2025-04-04 09:49:40 +02:00

Merge pull request #1152 from 1C-Company/bugfix/1138-parent-type-intersect

Исправление пересечения родительских типов ОМД #1138
This commit is contained in:
Dmitriy Marmyshev 2022-09-16 17:40:06 +03:00 committed by GitHub
commit dc66530351
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 501 additions and 46 deletions

View File

@ -100,6 +100,7 @@
- Не понятно в какой бинарной операции ошибка ql-constants-in-binary-operation #1143
- Возникает NPE при работе проверки form-list-ref-user-visibility-enabled #1146
- Проверка: doc-comment-parameter-section не находит ошибку #1087
- Исправление пересечения родительских типов ОМД #1138
## 0.2.0

View File

@ -14,7 +14,8 @@ Require-Bundle: org.eclipse.core.resources;bundle-version="[3.13.0,4.0.0)",
org.eclipse.xtext.builder;bundle-version="[2.18.0,3.0.0)",
org.eclipse.xtext.ui;bundle-version="[2.24.0,3.0.0)",
org.eclipse.handly;bundle-version="[1.5.0,2.0.0)",
org.eclipse.xtext.ui.shared;bundle-version="[2.19.0,3.0.0)"
org.eclipse.xtext.ui.shared;bundle-version="[2.19.0,3.0.0)",
org.eclipse.jdt.annotation;bundle-version="[2.2.0,3.0.0)";resolution:=optional
Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: com.e1c.v8codestyle.bsl
Bundle-ActivationPolicy: lazy

View File

@ -55,9 +55,9 @@ import com._1c.g5.v8.dt.mcore.TypeItem;
import com._1c.g5.v8.dt.mcore.TypeSet;
import com._1c.g5.v8.dt.mcore.util.Environments;
import com._1c.g5.v8.dt.mcore.util.McoreUtil;
import com._1c.g5.v8.dt.platform.IEObjectDynamicTypeNames;
import com._1c.g5.v8.dt.platform.IEObjectTypeNames;
import com.e1c.g5.v8.dt.check.components.BasicCheck;
import com.e1c.v8codestyle.internal.bsl.BslPlugin;
/**
* Abstract check of types in module objects. Allows to compute types respecting system enums,
@ -68,14 +68,6 @@ import com.e1c.g5.v8.dt.check.components.BasicCheck;
public abstract class AbstractTypeCheck
extends BasicCheck
{
private static final Collection<String> ALL_REF_TYPE_SET_PARENT_TYPE_NAMES =
Set.of(IEObjectDynamicTypeNames.CATALOG_REF_TYPE_NAME, IEObjectDynamicTypeNames.DOCUMENT_REF_TYPE_NAME,
IEObjectDynamicTypeNames.ENUM_REF_TYPE_NAME, IEObjectDynamicTypeNames.COC_REF_TYPE_NAME,
IEObjectDynamicTypeNames.COA_REF_TYPE_NAME, IEObjectDynamicTypeNames.CALCULATION_TYPE_REF_TYPE_NAME,
IEObjectDynamicTypeNames.BP_REF_TYPE_NAME, IEObjectDynamicTypeNames.BP_ROUTEPOINT_TYPE_NAME,
IEObjectDynamicTypeNames.TASK_REF_TYPE_NAME, IEObjectDynamicTypeNames.EXCHANGE_PLAN_REF_TYPE_NAME);
private static final String COMMON_MODULE = "CommonModule"; //$NON-NLS-1$
private static final QualifiedName QN_COMMON_MODULE = QualifiedName.create(COMMON_MODULE);
@ -101,6 +93,8 @@ public abstract class AbstractTypeCheck
/** The comment provider service. */
protected final BslMultiLineCommentDocumentationProvider commentProvider;
private final InternalTypeNameRegistry internalTypeNameRegistry;
/**
* Instantiates a new abstract type check.
*
@ -121,6 +115,9 @@ public abstract class AbstractTypeCheck
this.scopeProvider = rsp.get(IScopeProvider.class);
this.commentProvider = rsp.get(BslMultiLineCommentDocumentationProvider.class);
this.qualifiedNameConverter = qualifiedNameConverter;
this.internalTypeNameRegistry =
BslPlugin.getDefault().getInjector().getInstance(InternalTypeNameRegistry.class);
}
/**
@ -316,7 +313,7 @@ public abstract class AbstractTypeCheck
return parentTypes;
}
private static Collection<String> getTypeNames(Collection<TypeItem> parentTypes, EObject context)
private Collection<String> getTypeNames(Collection<TypeItem> parentTypes, EObject context)
{
Set<String> typeNames = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
for (TypeItem type : parentTypes)
@ -326,6 +323,11 @@ public abstract class AbstractTypeCheck
if (typeName != null)
{
typeNames.add(typeName);
String parentTypeName = getTypeSetItemParentTypeName(typeName);
if (parentTypeName != null)
{
typeNames.add(parentTypeName);
}
}
if (type instanceof TypeSet && typeName != null)
{
@ -337,48 +339,16 @@ public abstract class AbstractTypeCheck
if (IEObjectTypeNames.ANY_REF.equals(typeName))
{
typeNames.addAll(ALL_REF_TYPE_SET_PARENT_TYPE_NAMES);
}
else
{
String parentTypeName = getTypeSetItemParentTypeName(typeName);
if (parentTypeName != null)
{
typeNames.add(parentTypeName);
}
typeNames.addAll(internalTypeNameRegistry.allRefTypeSetParentTypeNames());
}
}
}
return typeNames;
}
private static String getTypeSetItemParentTypeName(String typeName)
private String getTypeSetItemParentTypeName(String typeName)
{
switch (typeName)
{
case IEObjectTypeNames.CATALOG_REF:
return IEObjectDynamicTypeNames.CATALOG_REF_TYPE_NAME;
case IEObjectTypeNames.DOCUMENT_REF:
return IEObjectDynamicTypeNames.DOCUMENT_REF_TYPE_NAME;
case IEObjectTypeNames.ENUM_REF:
return IEObjectDynamicTypeNames.ENUM_REF_TYPE_NAME;
case IEObjectTypeNames.CHART_OF_CHARACTERISTIC_TYPES_REF:
return IEObjectDynamicTypeNames.COC_REF_TYPE_NAME;
case IEObjectTypeNames.CHART_OF_ACCOUNTS_REF:
return IEObjectDynamicTypeNames.COA_REF_TYPE_NAME;
case IEObjectTypeNames.CHART_OF_CALCULATION_TYPES_REF:
return IEObjectDynamicTypeNames.CALCULATION_TYPE_REF_TYPE_NAME;
case IEObjectTypeNames.BUSINESS_PROCESS_REF:
return IEObjectDynamicTypeNames.BP_REF_TYPE_NAME;
case IEObjectTypeNames.BUSINESS_PROCESS_ROUTE_POINT_REF:
return IEObjectDynamicTypeNames.BP_ROUTEPOINT_TYPE_NAME;
case IEObjectTypeNames.TASK_REF:
return IEObjectDynamicTypeNames.TASK_REF_TYPE_NAME;
case IEObjectTypeNames.EXCHANGE_PLAN_REF:
return IEObjectDynamicTypeNames.EXCHANGE_PLAN_REF_TYPE_NAME;
default:
return null;
}
return internalTypeNameRegistry.getInternalTypeName(typeName);
}
}

View File

@ -0,0 +1,304 @@
/*******************************************************************************
* Copyright (C) 2022, 1C-Soft LLC and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* 1C-Soft LLC - initial API and implementation
*******************************************************************************/
package com.e1c.v8codestyle.bsl.strict.check;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import com._1c.g5.v8.dt.platform.IEObjectDynamicTypeNames;
import com._1c.g5.v8.dt.platform.IEObjectTypeNames;
import com.google.inject.Singleton;
/**
* The registry of internal type name.
*
* @author Dmitriy Marmyshev
*/
@Singleton
public class InternalTypeNameRegistry
{
private Map<String, String> typeToInternalTypeNames;
private Collection<String> allRefTypeSetParentTypeNames;
/**
* Gets the internal type name by the given public type name.
*
* @param typeName the public type name
* @return the internal type name
*/
@Nullable
public String getInternalTypeName(String typeName)
{
if (typeName == null)
{
return null;
}
if (typeToInternalTypeNames == null)
{
init();
}
return typeToInternalTypeNames.get(typeName);
}
/**
* Provide set of all reference type names of parent types.
*
* @return the collection of all reference type names of parent types.
*/
@NonNullByDefault
public Collection<String> allRefTypeSetParentTypeNames()
{
if (allRefTypeSetParentTypeNames == null)
{
init();
}
return allRefTypeSetParentTypeNames;
}
private synchronized void init()
{
if (typeToInternalTypeNames != null && allRefTypeSetParentTypeNames != null)
{
return;
}
Map<String, String> internalTypeNames = new HashMap<>();
internalTypeNames.put(IEObjectTypeNames.CATALOG_OBJ, IEObjectDynamicTypeNames.CATALOG_OBJECT_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CATALOG_REF, IEObjectDynamicTypeNames.CATALOG_REF_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CATALOG_SELECTION,
IEObjectDynamicTypeNames.CATALOG_SELECTION_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CATALOG_LIST, IEObjectDynamicTypeNames.CATALOG_LIST_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CATALOG_MANAGER, IEObjectDynamicTypeNames.CATALOG_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.DOCUMENT_OBJ, IEObjectDynamicTypeNames.DOCUMENT_OBJECT_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.DOCUMENT_REF, IEObjectDynamicTypeNames.DOCUMENT_REF_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.DOCUMENT_SELECTION,
IEObjectDynamicTypeNames.DOCUMENT_SELECTION_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.DOCUMENT_LIST, IEObjectDynamicTypeNames.DOCUMENT_LIST_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.DOCUMENT_MANAGER, IEObjectDynamicTypeNames.DOCUMENT_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CHART_OF_CHARACTERISTIC_TYPES_OBJ,
IEObjectDynamicTypeNames.COC_OBJECT_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CHART_OF_CHARACTERISTIC_TYPES_REF,
IEObjectDynamicTypeNames.COC_REF_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CHART_OF_CHARACTERISTIC_TYPES_SELECTION,
IEObjectDynamicTypeNames.COC_SELECTION_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CHART_OF_CHARACTERISTIC_TYPES_LIST,
IEObjectDynamicTypeNames.COC_LIST_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CHART_OF_CHARACTERISTIC_TYPES_MANAGER,
IEObjectDynamicTypeNames.COC_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CHART_OF_ACCOUNTS_OBJ, IEObjectDynamicTypeNames.COA_OBJECT_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CHART_OF_ACCOUNTS_REF, IEObjectDynamicTypeNames.COA_REF_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CHART_OF_ACCOUNTS_SELECTION,
IEObjectDynamicTypeNames.COA_SELECTION_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CHART_OF_ACCOUNTS_LIST, IEObjectDynamicTypeNames.COA_LIST_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CHART_OF_ACCOUNTS_MANAGER,
IEObjectDynamicTypeNames.COA_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CHART_OF_ACCOUNTS_EXT_DIMENSION_TYPES,
IEObjectDynamicTypeNames.COA_EXT_DIM_TYPE_NAME);
internalTypeNames.put("ChartOfAccountsExtDimensionTypesRow", //$NON-NLS-1$
IEObjectDynamicTypeNames.COA_EXT_DIM_ROW_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CHART_OF_CALCULATION_TYPES_OBJ,
IEObjectDynamicTypeNames.CHART_OF_CALCULATION_TYPES_OBJECT_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CHART_OF_CALCULATION_TYPES_MANAGER,
IEObjectDynamicTypeNames.CHART_OF_CALCULATION_TYPES_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CALCULATION_REGISTER_RECORD,
IEObjectDynamicTypeNames.CALCULATION_REGISTER_RECORD_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CALCULATION_REGISTER_SELECTION,
IEObjectDynamicTypeNames.CALCULATION_REGISTER_SELECTION_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CALCULATION_REGISTER_LIST,
IEObjectDynamicTypeNames.CALCULATION_REGISTER_LIST_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CALCULATION_REGISTER_MANAGER,
IEObjectDynamicTypeNames.CALCULATION_REGISTER_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CALCULATION_REGISTER_RECORD_SET,
IEObjectDynamicTypeNames.CALCULATION_REGISTER_RECORD_SET_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CALCULATION_REGISTER_RECORD_KEY,
IEObjectDynamicTypeNames.CALCULATION_REGISTER_RECORD_KEY_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CALCULATION_REGISTER_RECALCS,
IEObjectDynamicTypeNames.CALCULATION_REGISTER_RECALCS_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.RECALCULATION_RECORD,
IEObjectDynamicTypeNames.RECALCULATION_RECORD_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.RECALCULATION_MANAGER,
IEObjectDynamicTypeNames.RECALCULATION_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.RECALCULATION_RECORD_SET,
IEObjectDynamicTypeNames.RECALCULATION_RECORD_SET_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.INFORMATION_REGISTER_SELECTION,
IEObjectDynamicTypeNames.INFORMAION_REG_SELECTION_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.INFORMATION_REGISTER_LIST,
IEObjectDynamicTypeNames.INFORMAION_REG_LIST_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.INFORMATION_REGISTER_RECORD_SET,
IEObjectDynamicTypeNames.INFORMAION_REG_RECORD_SET_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.INFORMATION_REGISTER_MANAGER,
IEObjectDynamicTypeNames.INFORMAION_REG_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.INFORMATION_REGISTER_RECORD_KEY,
IEObjectDynamicTypeNames.INFORMAION_REG_RECORD_KEY_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.INFORMATION_REGISTER_RECORD,
IEObjectDynamicTypeNames.INFORMAION_REG_RECORD_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.INFORMATION_REGISTER_RECORD_MANAGER,
IEObjectDynamicTypeNames.INFORMAION_REG_RECORD_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.ENUM_REF, IEObjectDynamicTypeNames.ENUM_REF_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.ENUM_LIST, IEObjectDynamicTypeNames.ENUM_LIST_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.ENUM_MANAGER, IEObjectDynamicTypeNames.ENUM_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.ACCUMULATION_REGISTER_SELECTION,
IEObjectDynamicTypeNames.ACCUM_REG_SELECTION_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.ACCUMULATION_REGISTER_LIST,
IEObjectDynamicTypeNames.ACCUM_REG_LIST_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.ACCUMULATION_REGISTER_RECORD_SET,
IEObjectDynamicTypeNames.ACCUM_REG_RECORD_SET_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.ACCUMULATION_REGISTER_MANAGER,
IEObjectDynamicTypeNames.ACCUM_REG_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.ACCUMULATION_REGISTER_RECORD_KEY,
IEObjectDynamicTypeNames.ACCUM_REG_RECORD_KEY_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.ACCUMULATION_REGISTER_RECORD,
IEObjectDynamicTypeNames.ACCUM_REG_RECORD_TYPE_NAME);
internalTypeNames.put("AccountingRegisterSelection", //$NON-NLS-1$
IEObjectDynamicTypeNames.ACCOUNTING_REGISTER_SELECTION_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.ACCOUNTING_REGISTER_LIST,
IEObjectDynamicTypeNames.ACCOUNTING_REGISTER_LIST_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.ACCOUNTING_REGISTER_RECORD_SET,
IEObjectDynamicTypeNames.ACCOUNTING_REGISTER_RECORD_SET_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.ACCOUNTING_REGISTER_MANAGER,
IEObjectDynamicTypeNames.ACCOUNTING_REGISTER_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.ACCOUNTING_REGISTER_RECORD_KEY,
IEObjectDynamicTypeNames.ACCOUNTING_REGISTER_RECORD_KEY_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.ACCOUNTING_REGISTER_RECORD,
IEObjectDynamicTypeNames.ACCOUNTING_REGISTER_RECORD_TYPE_NAME);
internalTypeNames.put("AccountingRegisterExtDimensions", //$NON-NLS-1$
IEObjectDynamicTypeNames.ACCOUNTING_REGISTER_EXT_DIMENSIONS_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CONSTANT_MANAGER, IEObjectDynamicTypeNames.CONSTANT_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CONSTANT_VALUE_MANAGER,
IEObjectDynamicTypeNames.CONSTANT_VALUE_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CONSTANT_VALUE_KEY,
IEObjectDynamicTypeNames.CONSTANT_VALUE_KEY_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.EXCHANGE_PLAN_OBJ,
IEObjectDynamicTypeNames.EXCHANGE_PLAN_OBJECT_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.EXCHANGE_PLAN_REF,
IEObjectDynamicTypeNames.EXCHANGE_PLAN_REF_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.EXCHANGE_PLAN_SELECTION,
IEObjectDynamicTypeNames.EXCHANGE_PLAN_SELECTION_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.EXCHANGE_PLAN_LIST,
IEObjectDynamicTypeNames.EXCHANGE_PLAN_LIST_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.EXCHANGE_PLAN_MANAGER,
IEObjectDynamicTypeNames.EXCHANGE_PLAN_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.BUSINESS_PROCESS_OBJ, IEObjectDynamicTypeNames.BP_OBJECT_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.BUSINESS_PROCESS_REF, IEObjectDynamicTypeNames.BP_REF_TYPE_NAME);
internalTypeNames.put("BusinessProcessSelection", IEObjectDynamicTypeNames.BP_SELECTION_TYPE_NAME); //$NON-NLS-1$
internalTypeNames.put(IEObjectTypeNames.BUSINESS_PROCESS_LIST, IEObjectDynamicTypeNames.BP_LIST_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.BUSINESS_PROCESS_MANAGER,
IEObjectDynamicTypeNames.BP_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.BUSINESS_PROCESS_ROUTE_POINT_REF,
IEObjectDynamicTypeNames.BP_ROUTEPOINT_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.TASK_OBJ, IEObjectDynamicTypeNames.TASK_OBJECT_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.TASK_REF, IEObjectDynamicTypeNames.TASK_REF_TYPE_NAME);
internalTypeNames.put("TaskSelection", IEObjectDynamicTypeNames.TASK_SELECTION_TYPE_NAME); //$NON-NLS-1$
internalTypeNames.put(IEObjectTypeNames.TASK_LIST, IEObjectDynamicTypeNames.TASK_LIST_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.TASK_MANAGER, IEObjectDynamicTypeNames.TASK_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.SEQUENCE_RECORD, IEObjectDynamicTypeNames.SEQUENCE_RECORD_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.SEQUENCE_MANAGER, IEObjectDynamicTypeNames.SEQUENCE_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.SEQUENCE_RECORD_SET,
IEObjectDynamicTypeNames.SEQUENCE_RECORD_SET_TYPE_NAME);
internalTypeNames.put("DocumentJournalSelection", //$NON-NLS-1$
IEObjectDynamicTypeNames.DOCUMENT_JOURNAL_SELECTION_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.DOCUMENT_JOURNAL_LIST,
IEObjectDynamicTypeNames.DOCUMENT_JOURNAL_LIST_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.DOCUMENT_JOURNAL_MANAGER,
IEObjectDynamicTypeNames.DOCUMENT_JOURNAL_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.REPORT_OBJ, IEObjectDynamicTypeNames.REPORT_OBJECT_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.REPORT_MANAGER, IEObjectDynamicTypeNames.REPORT_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.DATA_PROCESSOR_OBJ,
IEObjectDynamicTypeNames.DATA_PROCESSOR_OBJECT_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.DATA_PROCESSOR_MANAGER,
IEObjectDynamicTypeNames.DATA_PROCESSOR_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.FILTER_CRITERION_LIST,
IEObjectDynamicTypeNames.FILTER_CRITERION_LIST_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.FILTER_CRITERION_MANAGER,
IEObjectDynamicTypeNames.FILTER_CRITERION_MANAGER_TYPE_NAME);
internalTypeNames.put("WSReferenceManager", IEObjectDynamicTypeNames.WS_REFERENCE_MANAGER_TYPE_NAME); //$NON-NLS-1$
internalTypeNames.put(IEObjectTypeNames.SETTINGS_STORAGE_MANAGER,
IEObjectDynamicTypeNames.SETTINGS_STORAGE_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CHART_OF_CALCULATION_TYPES_REF,
IEObjectDynamicTypeNames.CALCULATION_TYPE_REF_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CHART_OF_CALCULATION_TYPES_SELECTION,
IEObjectDynamicTypeNames.CALCULATION_TYPE_SELECTION_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.CHART_OF_CALCULATION_TYPES_LIST,
IEObjectDynamicTypeNames.CALCULATION_TYPE_LIST_TYPE_NAME);
internalTypeNames.put("DisplacingCalculationTypes", //$NON-NLS-1$
IEObjectDynamicTypeNames.CALCULATION_TYPE_DISPLACING_CALCULATION_TYPES);
internalTypeNames.put("DisplacingCalculationTypesRow", //$NON-NLS-1$
IEObjectDynamicTypeNames.CALCULATION_TYPE_DISPLACING_CALCULATION_TYPES_ROW);
internalTypeNames.put("BaseCalculationTypes", IEObjectDynamicTypeNames.CALCULATION_TYPE_BASE_CALCULATION_TYPES); //$NON-NLS-1$
internalTypeNames.put("BaseCalculationTypesRow", //$NON-NLS-1$
IEObjectDynamicTypeNames.CALCULATION_TYPE_BASE_CALCULATION_TYPES_ROW);
internalTypeNames.put("LeadingCalculationTypes", //$NON-NLS-1$
IEObjectDynamicTypeNames.CALCULATION_TYPE_LEADING_CALCULATION_TYPES);
internalTypeNames.put("LeadingCalculationTypesRow", //$NON-NLS-1$
IEObjectDynamicTypeNames.CALCULATION_TYPE_LEADING_CALCULATION_TYPES_ROW);
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_MANAGER,
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_MANAGER_TYPE_NAME);
internalTypeNames.put("ExternalDataSourceTablesManager", //$NON-NLS-1$
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_TABLES_MANAGER_TYPE_NAME);
internalTypeNames.put("ExternalDataSourceCubesManager", //$NON-NLS-1$
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_CUBES_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_CUBE_MANAGER,
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_CUBE_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_CUBE_RECORD_SET,
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_CUBE_RECORD_SET_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_CUBE_RECORD_KEY,
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_CUBE_RECORD_KEY_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_CUBE_RECORD,
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_CUBE_RECORD_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_CUBE_RECORD_MANAGER,
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_CUBE_RECORD_MANAGER_TYPE_NAME);
internalTypeNames.put("ExternalDataSourceCubeDimensionsTablesManager", //$NON-NLS-1$
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_CUBE_DIMENSION_TABLES_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_CUBE_DIMENSION_TABLE_MANAGER,
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_DIMENSION_TABLE_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_CUBE_DIMENSION_TABLE_OBJECT,
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_DIMENSION_TABLE_OBJECT_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_CUBE_DIMENSION_TABLE_REF,
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_DIMENSION_TABLE_REF_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_TABLE_MANAGER,
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_TABLE_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_TABLE_OBJECT,
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_TABLE_OBJECT_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_TABLE_REF,
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_TABLE_REF_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_TABLE_RECORD_SET,
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_TABLE_RECORD_SET_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_TABLE_RECORD,
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_TABLE_RECORD_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_TABLE_RECORD_KEY,
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_TABLE_RECORD_KEY_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.EXTERNAL_DATA_SOURCE_TABLE_RECORD_MANAGER,
IEObjectDynamicTypeNames.EXTERNAL_DATA_SOURCE_TABLE_RECORD_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.INTEGRATION_SERVICE_MANAGER,
IEObjectDynamicTypeNames.INTEGRATION_SERVICE_MANAGER_TYPE_NAME);
internalTypeNames.put(IEObjectTypeNames.INTEGRATION_SERVICE_MANAGER_CHANNEL,
IEObjectDynamicTypeNames.INTEGRATION_SERVICE_CHANNEL_MANAGER_TYPE_NAME);
typeToInternalTypeNames = Map.copyOf(internalTypeNames);
allRefTypeSetParentTypeNames =
Set.of(IEObjectDynamicTypeNames.CATALOG_REF_TYPE_NAME, IEObjectDynamicTypeNames.DOCUMENT_REF_TYPE_NAME,
IEObjectDynamicTypeNames.ENUM_REF_TYPE_NAME, IEObjectDynamicTypeNames.COC_REF_TYPE_NAME,
IEObjectDynamicTypeNames.COA_REF_TYPE_NAME, IEObjectDynamicTypeNames.CALCULATION_TYPE_REF_TYPE_NAME,
IEObjectDynamicTypeNames.BP_REF_TYPE_NAME, IEObjectDynamicTypeNames.BP_ROUTEPOINT_TYPE_NAME,
IEObjectDynamicTypeNames.TASK_REF_TYPE_NAME, IEObjectDynamicTypeNames.EXCHANGE_PLAN_REF_TYPE_NAME);
}
}

View File

@ -0,0 +1,15 @@
// @strict-types
Procedure OnWrite()
Test(ThisObject);
EndProcedure
// Parameters:
// ObjectOfCatalog - CatalogObject - Объект справочника
//
Procedure Test(ObjectOfCatalog)
EndProcedure

View File

@ -0,0 +1,63 @@
/**
*
*/
package com.e1c.v8codestyle.bsl.strict.check.itests;
import static org.junit.Assert.assertTrue;
import java.util.List;
import org.junit.Test;
import com._1c.g5.v8.dt.validation.marker.Marker;
import com.e1c.v8codestyle.bsl.check.itests.AbstractSingleModuleTestBase;
import com.e1c.v8codestyle.bsl.strict.check.InvocationParamIntersectionCheck;
/**
* Tests for {@link InvocationParamIntersectionCheck} check.
*
* @author Dmitriy Marmyshev
*/
public class InvocationParamIntersectionCheckTest
extends AbstractSingleModuleTestBase
{
private static final String PROJECT_NAME = "CatalogModules";
private static final String MODULE_FILE_NAME = "/src/Catalogs/TestCatalog/ObjectModule.bsl";
/**
* Instantiates a new invocation parameter intersection check test.
*/
public InvocationParamIntersectionCheckTest()
{
super(InvocationParamIntersectionCheck.class);
}
/**
* Test invocation intersection of type {@code CatalogObject.TestCatalog} with parent type {@code CatalogObject}.
*
* @throws Exception the exception
*/
@Test
public void testInvocationIntersectionWithParentType() throws Exception
{
updateModule(FOLDER_RESOURCE + "strict/invocation-parameter-type-intersect-catalog-object.bsl");
List<Marker> markers = getModuleMarkers();
assertTrue(markers.isEmpty());
}
@Override
protected String getTestConfigurationName()
{
return PROJECT_NAME;
}
@Override
protected String getModuleFileName()
{
return MODULE_FILE_NAME;
}
}

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>CatalogModules</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
<nature>com._1c.g5.v8.dt.core.V8ConfigurationNature</nature>
</natures>
</projectDescription>

View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding/<project>=UTF-8

View File

@ -0,0 +1,2 @@
Manifest-Version: 1.0
Runtime-Version: 8.3.19

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Catalog xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="c385d3fb-a7bc-406e-bed2-11bdb2cd13a4">
<producedTypes>
<objectType typeId="8d58b655-f6f9-4608-957d-eeb265a3fe80" valueTypeId="2c6541c1-eeda-4cc7-af1c-197e7c63c402"/>
<refType typeId="0cdedb23-d7ed-4588-ad2d-647689dd9655" valueTypeId="40668cde-2109-491f-b5e5-9d0e3cb4b8b0"/>
<selectionType typeId="e3b17a28-d01c-40ef-8231-445bab2a0e82" valueTypeId="1271498d-d446-46d5-a206-530f334719f6"/>
<listType typeId="cad34e92-28f6-4752-87e1-63b181a8e659" valueTypeId="947457d7-a864-4efa-acab-b76dcd6394fa"/>
<managerType typeId="10df9a48-cb06-4bc3-80c2-3e5361727165" valueTypeId="d5a46756-6a6d-41d0-abb2-a691b831726e"/>
</producedTypes>
<name>TestCatalog</name>
<synonym>
<key>en</key>
<value>Test catalog</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<inputByString>Catalog.TestCatalog.StandardAttribute.Code</inputByString>
<inputByString>Catalog.TestCatalog.StandardAttribute.Description</inputByString>
<fullTextSearchOnInputByString>DontUse</fullTextSearchOnInputByString>
<createOnInput>Use</createOnInput>
<dataLockControlMode>Managed</dataLockControlMode>
<fullTextSearch>Use</fullTextSearch>
<levelCount>2</levelCount>
<foldersOnTop>true</foldersOnTop>
<codeLength>9</codeLength>
<descriptionLength>25</descriptionLength>
<codeType>String</codeType>
<codeAllowedLength>Variable</codeAllowedLength>
<checkUnique>true</checkUnique>
<autonumbering>true</autonumbering>
<defaultPresentation>AsDescription</defaultPresentation>
<editType>InDialog</editType>
<choiceMode>BothWays</choiceMode>
</mdclass:Catalog>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<cmi:CommandInterface xmlns:cmi="http://g5.1c.ru/v8/dt/cmi"/>

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="48f9df0f-3822-4857-b015-2cfbfccf2f0f">
<name>CatalogModules</name>
<synonym>
<key>en</key>
<value>Catalog modules</value>
</synonym>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="77bb3ac6-59b2-4f92-ae1c-41d80aa7bf2d"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="3bbde361-d486-4d63-a131-13726bc8e6a6"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="5217b349-47f7-44c9-b82d-04cadbbba76b"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="ae4ef44f-a54e-475c-9e11-de9fb795c61a"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="decbf819-e39e-4217-80dc-13e7efda496d"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="5bc8a76c-dbb1-4237-9986-52808a7eeb81"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="3df3aeb6-9577-40dc-b8e4-2b71a4dc593a"/>
<configurationExtensionCompatibilityMode>8.3.19</configurationExtensionCompatibilityMode>
<defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes>
<usedMobileApplicationFunctionalities>
<functionality>
<use>true</use>
</functionality>
<functionality>
<functionality>OSBackup</functionality>
<use>true</use>
</functionality>
</usedMobileApplicationFunctionalities>
<defaultLanguage>Language.English</defaultLanguage>
<dataLockControlMode>Managed</dataLockControlMode>
<objectAutonumerationMode>NotAutoFree</objectAutonumerationMode>
<modalityUseMode>DontUse</modalityUseMode>
<synchronousPlatformExtensionAndAddInCallUseMode>DontUse</synchronousPlatformExtensionAndAddInCallUseMode>
<compatibilityMode>8.3.19</compatibilityMode>
<languages uuid="a0f37188-f580-4409-971b-f72f6c603bac">
<name>English</name>
<synonym>
<key>en</key>
<value>English</value>
</synonym>
<languageCode>en</languageCode>
</languages>
<catalogs>Catalog.TestCatalog</catalogs>
</mdclass:Configuration>

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<cmi:CommandInterface xmlns:cmi="http://g5.1c.ru/v8/dt/cmi"/>